diff --git a/core/zero/gkyl_eqn_type.h b/core/zero/gkyl_eqn_type.h index 3d05ee2347..0047add7aa 100644 --- a/core/zero/gkyl_eqn_type.h +++ b/core/zero/gkyl_eqn_type.h @@ -34,11 +34,14 @@ 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_ES_IWL = 3, // Inner-wall limited ES. - GKYL_GK_FIELD_EM = 4, // Electromagnetic GK. + GKYL_GK_FIELD_IWL = 3, // Inner-wall limited. + GKYL_GK_FIELD_ES = 4, // Electrostatic field. + GKYL_GK_FIELD_ES_IWL = 5, // Electromagnetic field with inner-wall limited BCs. + GKYL_GK_FIELD_EM = 6, // To force electromagnetic field solve (even if no species is EM). + GKYL_GK_FIELD_EM_IWL = 7, // As above but for IWL. }; // Identifiers for specific field object types. @@ -177,7 +180,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. diff --git a/gyrokinetic/apps/gk_field.c b/gyrokinetic/apps/gk_field.c index 81064610d9..cdc8361455 100644 --- a/gyrokinetic/apps/gk_field.c +++ b/gyrokinetic/apps/gk_field.c @@ -68,9 +68,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 @@ -122,6 +132,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 @@ -130,6 +201,52 @@ 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); +} + +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) { @@ -147,6 +264,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 @@ -165,15 +298,22 @@ gk_field_energy_new(struct gkyl_gyrokinetic_app *app, struct gk_field *f) f->is_first_energy_write_call = true; f->calc_energy_func = gk_field_calc_energy_enabled; + f->calc_energy_dt_func = gk_field_calc_energy_dt_none; - - if (f->info.time_rate_diagnostics) { + 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); - } // 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 @@ -188,6 +328,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 @@ -208,6 +358,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); + } } // Related to enforcing parallel Vlasov boundary conditions @@ -226,6 +382,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->is_em = f->info.gkfield_id == GKYL_GK_FIELD_EM || f->info.gkfield_id == GKYL_GK_FIELD_EM_IWL; + // 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) || + (s->info.collisionless.type == GKYL_GK_COLLISIONLESS_EM_BPERP) || + (s->info.collisionless.type == GKYL_GK_COLLISIONLESS_EM_BPAR); + } + 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_field = !f->info.zero_init_field; f->update_field = !f->info.is_static; @@ -269,6 +444,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 timespec wst = gkyl_wall_clock(); + field->ampere_solve(app, field); + // Smooth Apar after solving Ampere's law. + gk_field_fem_projection_par(app, field, field->apar, field->apar); + 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) { @@ -283,6 +498,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) { // Gyroaverage the density if needed. @@ -316,6 +537,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]); + gkyl_array_accumulate_range(field->currentDens, s->info.charge, s->m1.marr, &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]); + + gkyl_array_accumulate_range(field->currentDensdot, s->info.charge, s->m1.marr, &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 d6091d1463..0f67e5327e 100644 --- a/gyrokinetic/apps/gk_field_1x.c +++ b/gyrokinetic/apps/gk_field_1x.c @@ -19,6 +19,54 @@ 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 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, field->apardot, 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 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, field->apar, 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){ + // 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); +} + +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_release_1x(const gkyl_gyrokinetic_app *app, struct gk_field *f) { @@ -26,10 +74,24 @@ 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); + 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); - if (f->gkfield_id == GKYL_GK_FIELD_EM) { - gkyl_array_release(f->apar_fem); - gkyl_array_release(f->apardot_fem); + 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); + } } if (app->use_gpu) { @@ -61,11 +123,43 @@ 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); + + // Allocate additional arrays for EM case. + if (f->is_em) { + + f->apar_host = f->apar; + f->apardot_host = f->apardot; + 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); + } - // 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->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; + + 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. @@ -74,7 +168,15 @@ 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 = gk_field_em_rhs_enabled; + f->ampere_solve = gk_field_ampere_solve_1x_enabled; + } 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 403e2ff32c..b782b654d7 100644 --- a/gyrokinetic/apps/gk_field_2x3x.c +++ b/gyrokinetic/apps/gk_field_2x3x.c @@ -55,6 +55,16 @@ gk_field_2x3x_add_TSBC_and_SSFG_updaters(struct gkyl_gyrokinetic_app *app, struc app->basis, &app->lower_skin_par_core, &app->lower_ghost_par_core, app->use_gpu); } +static void +gk_field_twistshift_enabled(struct gkyl_bc_twistshift *up, struct gkyl_array *fdo, struct gkyl_array *ftar){ + gkyl_bc_twistshift_advance(up, fdo, ftar); +} + +static void +gk_field_twistshift_disabled(struct gkyl_bc_twistshift *up, struct gkyl_array *fdo, struct gkyl_array *ftar){ + // Do nothing +} + static void gk_field_enforce_parallel_bc_enabled(const gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *finout) { @@ -66,9 +76,7 @@ gk_field_enforce_parallel_bc_enabled(const gkyl_gyrokinetic_app *app, struct gk_ num_periodic_dir, periodic_dirs, finout); // Update the lower z ghosts with twist-and-shift if we are in 3x2v - if (app->cdim == 3) { - gkyl_bc_twistshift_advance(field->bc_T_LU_lo, finout, finout); - } + field->twistshift_func(field->bc_T_LU_lo, finout, finout); // Sync ghost cells between MPI processes. gkyl_comm_array_sync(app->comm, &app->local, &app->local_ext, finout); @@ -77,6 +85,23 @@ gk_field_enforce_parallel_bc_enabled(const gkyl_gyrokinetic_app *app, struct gk_ gkyl_skin_surf_from_ghost_advance(field->ssfg_z_lo, finout); } +static void +gk_field_enforce_parallel_bc_em_enabled(const struct gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *finout) +{ + // Apply the periodicity along the field to fill ghost cells. + int num_periodic_dir = 1; + int par_dir = app->cdim - 1; + int periodic_dirs[] = {par_dir}; + gkyl_comm_array_per_sync(app->comm, &app->local, &app->local_ext, + num_periodic_dir, periodic_dirs, finout); + + // Update the lower z ghosts with twist-and-shift if we are in 3x2v + field->twistshift_func(field->bc_T_LU_lo, finout, finout); + + // Sync ghost cells between MPI processes. + gkyl_comm_array_sync(app->comm, &app->local, &app->local_ext, finout); +} + static void gk_field_rhs_poisson_perp_2x3x(struct gkyl_gyrokinetic_app *app, struct gk_field *field) { @@ -121,6 +146,55 @@ gk_field_rhs_deflate_poisson_es_iwl(struct gkyl_gyrokinetic_app *app, struct gk_ field->enforce_parallel_bc_func(app, field, field->phi_smooth); } +static void +gk_field_ohm_solve(struct gkyl_gyrokinetic_app *app, struct gk_field *field){ + struct timespec wst = gkyl_wall_clock(); + + // The update of kSq is causing issues with leaks and valgrind. + // gkyl_fem_poisson_perp_update_kSq(field->fem_apardot_solver, field->dApartdtSlvr_kSq); + + // Temporary solution to avoid superLU leak when updating kSq: we release and re-create the solver + gkyl_fem_poisson_perp_release(field->fem_apardot_solver); + field->fem_apardot_solver = gkyl_fem_poisson_perp_new(&app->local, &app->grid, app->basis, + &field->ampere_bcs, field->lapWeightAmpere, field->dApartdtSlvr_kSq, app->use_gpu); + + gkyl_fem_poisson_perp_set_rhs(field->fem_apardot_solver, field->currentDensdot); + gkyl_fem_poisson_perp_solve(field->fem_apardot_solver, field->apardot); + + // gkyl_array_clear_range(field->apardot, 0.0, &app->local_ext); + + 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 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, field->apar); + field->enforce_parallel_bc_em_func(app, field, field->apar); + 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){ + // 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->enforce_parallel_bc_em_func(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_release_2x3x(const gkyl_gyrokinetic_app *app, struct gk_field *f) { @@ -129,10 +203,24 @@ 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->apar_curr); + gkyl_array_release(f->apar1); + gkyl_array_release(f->aparnew); + + if (f->is_em) { + 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); + } } if (app->use_gpu) { @@ -150,14 +238,15 @@ gk_field_fem_release_2x3x(const gkyl_gyrokinetic_app *app, struct gk_field *f) if (f->gkfield_id == GKYL_GK_FIELD_ES_IWL) { gkyl_fem_parproj_release(f->fem_parproj_core); gkyl_fem_parproj_release(f->fem_parproj_sol); - } else { + } + if (f->is_em || !(f->gkfield_id == GKYL_GK_FIELD_ES_IWL)) { gkyl_fem_parproj_release(f->fem_parproj); } gkyl_array_integrate_release(f->calc_em_energy); // Release TS BC and SSFG updater - if (f->gkfield_id == GKYL_GK_FIELD_ES_IWL) { + if (f->gkfield_id == GKYL_GK_FIELD_ES_IWL || f->gkfield_id == GKYL_GK_FIELD_EM_IWL) { if (app->cdim == 3) { gkyl_bc_twistshift_release(f->bc_T_LU_lo); } @@ -183,11 +272,25 @@ 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); + + // Setup electromagnetic variables if needed. + if (f->is_em) { + f->apar_host = f->apar; + f->apardot_host = f->apardot; + 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); + } - // 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->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. @@ -218,6 +321,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); + } + // Translate input file BCs into Poisson BCs. struct gkyl_poisson_bc poisson_bcs = { }; @@ -316,17 +427,59 @@ gk_field_fem_new_2x3x(struct gkyl_gyrokinetic_app *app, struct gk_field *f) fem_parproj_bc_sol, 0, 0, app->use_gpu); } else { f->rhs_phi_func = gk_field_rhs_poisson_perp_2x3x; + } + + if (f->is_em || !(f->gkfield_id == GKYL_GK_FIELD_ES_IWL)) { enum gkyl_fem_parproj_bc_type fem_parproj_bc = GKYL_FEM_PARPROJ_NONE; for (int d=0; dnum_periodic_dir; ++d) { if (app->periodic_dirs[d] == app->cdim-1) { fem_parproj_bc = GKYL_FEM_PARPROJ_PERIODIC; } } - f->fem_parproj = gkyl_fem_parproj_new(&app->global, &app->basis, fem_parproj_bc, 0, 0, app->use_gpu); } + f->ampere_solve = gk_field_ampere_solve_none; + f->em_rhs_func = gk_field_em_rhs_none; + // Setup EM solvers. + 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, 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, f->lapWeightAmpere, f->dApartdtSlvr_kSq, app->use_gpu); + // FEM smoother for Aparallel. + f->fem_parproj_ampere_bc = GKYL_FEM_PARPROJ_NONE; + f->fem_apar_parproj = gkyl_fem_parproj_new(&app->global, &app->basis, + f->fem_parproj_ampere_bc, 0, 0, app->use_gpu); + + f->ampere_solve = gk_field_ampere_solve_enabled; + f->em_rhs_func = gk_field_em_rhs_enabled; + } + gkyl_array_set(f->es_energy_fac, 0.5, f->epsilon); f->calc_em_energy = gkyl_array_integrate_new(&app->grid, &app->basis, @@ -347,9 +500,15 @@ gk_field_fem_new_2x3x(struct gkyl_gyrokinetic_app *app, struct gk_field *f) // Twist-and-shift boundary condition for phi and skin surface from ghost to impose phi periodicity at z=-pi. f->enforce_parallel_bc_func = gk_field_enforce_parallel_bc_disabled; - if (f->gkfield_id == GKYL_GK_FIELD_ES_IWL) { + f->enforce_parallel_bc_em_func = gk_field_enforce_parallel_bc_disabled; + f->twistshift_func = gk_field_twistshift_disabled; + if (f->gkfield_id == GKYL_GK_FIELD_ES_IWL || f->gkfield_id == GKYL_GK_FIELD_EM_IWL) { gk_field_2x3x_add_TSBC_and_SSFG_updaters(app,f); + if (app->cdim == 3) + f->twistshift_func = gk_field_twistshift_enabled; f->enforce_parallel_bc_func = gk_field_enforce_parallel_bc_enabled; + if (f->is_em) + f->enforce_parallel_bc_em_func = gk_field_enforce_parallel_bc_em_enabled; } f->solver_release_func = gk_field_fem_release_2x3x; diff --git a/gyrokinetic/apps/gk_multib_field.c b/gyrokinetic/apps/gk_multib_field.c index fbb68473b1..9ad3fecbbd 100644 --- a/gyrokinetic/apps/gk_multib_field.c +++ b/gyrokinetic/apps/gk_multib_field.c @@ -417,7 +417,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 4074d267d0..83e3fba70e 100644 --- a/gyrokinetic/apps/gk_species.c +++ b/gyrokinetic/apps/gk_species.c @@ -73,7 +73,56 @@ 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, 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) { @@ -110,36 +159,17 @@ gk_species_rhs_dynamic(gkyl_gyrokinetic_app *app, struct gk_species *species, // Heating source. gk_species_heating_rhs(app, species, &species->heat_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, 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); +static void +gk_species_add_apardot_dynamic(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + struct timespec wst = gkyl_wall_clock(); - 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); + gk_species_collisionless_add_apardot_rhs(app, species, &species->collisionless, fin, rhs); - app->stat.species_omega_cfl_tm += gkyl_time_diff_now_sec(tm); - return dt_out; + app->stat.species_collisionless_tm += gkyl_time_diff_now_sec(wst); } static double @@ -172,12 +202,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 @@ -952,6 +981,12 @@ gk_species_init_dynamic(struct gkyl_gk *gk_app_inp, struct gkyl_gyrokinetic_app // Set function pointers. gks->rhs_func = gk_species_rhs_dynamic; gks->rhs_implicit_func = gk_species_rhs_implicit_dynamic; + if ((gks->info.collisionless.type == GKYL_GK_COLLISIONLESS_EM) || (gks->info.collisionless.type == GKYL_GK_COLLISIONLESS_EM_BPERP)) + gks->add_apardot_rhs_func = gk_species_add_apardot_dynamic; + else + gks->add_apardot_rhs_func = gk_species_rhs_static; + 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; @@ -986,6 +1021,9 @@ 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_implicit_func = gk_species_rhs_implicit_static; + gks->add_apardot_rhs_func = gk_species_rhs_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; @@ -1479,6 +1517,17 @@ gk_species_init(struct gkyl_gk *gk_app_inp, struct gkyl_gyrokinetic_app *app, st 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); + + // 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); + // Initialize the collisionless solver. gks->collisionless = (struct gk_collisionless) { }; gk_species_collisionless_init(app, gks, &gks->collisionless); @@ -1762,11 +1811,32 @@ gk_species_apply_ic_cross(gkyl_gyrokinetic_app *app, struct gk_species *gks_self } } -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_add_apardot_rhs(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + species->add_apardot_rhs_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 @@ -1921,5 +1991,9 @@ gk_species_release(const gkyl_gyrokinetic_app* app, const struct gk_species *s) gkyl_deflated_fem_poisson_release(s->flr_op); } + gkyl_array_release(s->gyro_apar); + gkyl_array_release(s->gyro_apardot); + gk_species_moment_release(app, &s->m1); + s->release_func(app, s); } diff --git a/gyrokinetic/apps/gk_species_collisionless.c b/gyrokinetic/apps/gk_species_collisionless.c index a3f41128c0..f6c3a83e95 100644 --- a/gyrokinetic/apps/gk_species_collisionless.c +++ b/gyrokinetic/apps/gk_species_collisionless.c @@ -20,7 +20,7 @@ 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, fin, gkcls->flux_surf, species->cflrate); } static void @@ -45,6 +45,25 @@ 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_add_apardot_rhs_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(); + + // First remove the current ES+Apar contribution from the flux_surf array. + // Otherwise it will be counted twice in the gkyl_dg update. + gkyl_array_clear(gkcls->flux_surf, 0.0); + gkyl_gk_collisionless_flux_surf(gkcls->add_apardot_surf_flux_op, + &app->local, &species->local, &app->local_ext, &species->local_ext, + species->gyro_phi, species->gyro_apardot, fin, gkcls->flux_surf, species->cflrate); + + // Advance the rhs adding only the Apardot volume contribution. + gkyl_dg_updater_gyrokinetic_advance(gkcls->add_apardot_slvr, &species->local, + fin, species->cflrate, rhs); + + app->stat.species_collisionless_tm += gkyl_time_diff_now_sec(wst); +} + static void gk_species_collisionless_fdot_scaling_disabled(gkyl_gyrokinetic_app *app, struct gk_species *gks, struct gk_collisionless *gkcls, struct gkyl_array *rhs, struct gkyl_array *cflrate, struct gkyl_range *rng) @@ -81,11 +100,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->add_apardot_rhs_func = gk_species_collisionless_rhs_disabled; if (gkcls->collisionless_id) { @@ -123,32 +144,23 @@ gk_species_collisionless_init(struct gkyl_gyrokinetic_app *app, struct gk_specie // Allocate arrays to store surface phase space flux. gkcls->flux_surf = mkarr(app->use_gpu, flux_surf_sz, 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. - } - enum gkyl_gyrokinetic_bc_type bctype_conf[2*GKYL_MAX_CDIM]; for (int d=0; dcdim; d++) { bctype_conf[d] = gks->lower_bc[d].type; bctype_conf[GKYL_MAX_CDIM+d] = gks->upper_bc[d].type; } + bool only_apardot = 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, + gks->info.charge, gks->info.mass, gkcls->collisionless_id, gkcls->no_by, only_apardot, 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, - gks->info.skip_cell_threshold, gkcls->collisionless_id, app->gk_geom, gks->vel_map, + gks->info.skip_cell_threshold, gkcls->collisionless_id, gkcls->no_by, only_apardot, app->gk_geom, gks->vel_map, &aux_inp, app->use_gpu); gkcls->scale_fac = -1.0; // Not used if scale_factor in input file is not given. @@ -164,6 +176,21 @@ gk_species_collisionless_init(struct gkyl_gyrokinetic_app *app, struct gk_specie if (gkcls->write_diagnostics) { gkcls->write_diags_func = gk_species_collisionless_write_diags_enabled; } + // Electromagnetic set up. + if ((gkcls->collisionless_id == GKYL_GK_COLLISIONLESS_EM) || (gkcls->collisionless_id == GKYL_GK_COLLISIONLESS_EM_BPERP)) { + only_apardot = true; + // Create a special flux operator that only adds the AparDot contribution. + gkcls->add_apardot_surf_flux_op = gkyl_gk_collisionless_flux_new(&gks->grid, &app->basis, &gks->basis, + gks->info.charge, gks->info.mass, gkcls->collisionless_id, gkcls->no_by, only_apardot, app->gk_geom, + app->dg_geom, app->gk_dg_geom, gks->vel_map, bctype_conf, app->use_gpu); + // Create solver that only adds AparDot terms. + gkcls->add_apardot_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, + gks->info.skip_cell_threshold, gkcls->collisionless_id, gkcls->no_by, only_apardot, app->gk_geom, gks->vel_map, + &aux_inp, app->use_gpu); + // Methods chosen at runtime. + gkcls->add_apardot_rhs_func = gk_species_collisionless_add_apardot_rhs_enabled; + } } } @@ -181,6 +208,13 @@ gk_species_collisionless_rhs(gkyl_gyrokinetic_app *app, struct gk_species *speci gkcls->rhs_func(app, species, gkcls, fin, rhs); } +void +gk_species_collisionless_add_apardot_rhs(gkyl_gyrokinetic_app *app, struct gk_species *species, + struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs) +{ + gkcls->add_apardot_rhs_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) @@ -193,13 +227,15 @@ gk_species_collisionless_release(const struct gkyl_gyrokinetic_app *app, const s { if (gkcls->collisionless_id) { - gkyl_array_release(gkcls->flux_surf); - gkyl_array_release(gkcls->apar); - gkyl_array_release(gkcls->apardot); - + gkyl_array_release(gkcls->flux_surf); gkyl_gk_collisionless_flux_release(gkcls->surf_flux_op); gkyl_dg_updater_gyrokinetic_release(gkcls->slvr); + if ((gkcls->collisionless_id == GKYL_GK_COLLISIONLESS_EM) || (gkcls->collisionless_id == GKYL_GK_COLLISIONLESS_EM_BPERP)) { + gkyl_gk_collisionless_flux_release(gkcls->add_apardot_surf_flux_op); + gkyl_dg_updater_gyrokinetic_release(gkcls->add_apardot_slvr); + } + if (gkcls->write_diagnostics) { } } diff --git a/gyrokinetic/apps/gk_species_projection.c b/gyrokinetic/apps/gk_species_projection.c index 755596b488..470124f48b 100644 --- a/gyrokinetic/apps/gk_species_projection.c +++ b/gyrokinetic/apps/gk_species_projection.c @@ -284,7 +284,7 @@ init_maxwellian_gaussian(struct gkyl_gyrokinetic_app *app, struct gk_species *s, // Set periodicity for last dim if we are in IWL, and all other directions defined by the user. for (int dir = 0; dir < GKYL_MAX_CDIM; ++dir) fg_ctx.is_dir_periodic[dir] = false; - fg_ctx.is_dir_periodic[app->cdim-1] = app->field->info.gkfield_id == GKYL_GK_FIELD_ES_IWL; + fg_ctx.is_dir_periodic[app->cdim-1] = app->field->info.gkfield_id == GKYL_GK_FIELD_IWL || app->field->info.gkfield_id == GKYL_GK_FIELD_EM_IWL; for (int i=0; i < app->num_periodic_dir; ++i) fg_ctx.is_dir_periodic[app->periodic_dirs[i]] = true; diff --git a/gyrokinetic/apps/gkyl_gyrokinetic.h b/gyrokinetic/apps/gkyl_gyrokinetic.h index a084671f5d..a6e6605ff7 100644 --- a/gyrokinetic/apps/gkyl_gyrokinetic.h +++ b/gyrokinetic/apps/gkyl_gyrokinetic.h @@ -76,6 +76,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). }; @@ -487,6 +488,10 @@ 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 time_rate_diagnostics; // Writes the time rate of change of field energy. // Initial potential used to compute the total polarization density. @@ -598,7 +603,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 92f1d4ba57..ab1ba821fb 100644 --- a/gyrokinetic/apps/gkyl_gyrokinetic_priv.h +++ b/gyrokinetic/apps/gkyl_gyrokinetic_priv.h @@ -286,6 +286,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. @@ -294,12 +295,11 @@ struct gk_collisionless { // Charged (gyrokinetic) species ............................................ // struct { struct gkyl_array *flux_surf; // 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. + struct gkyl_gk_collisionless_flux *add_apardot_surf_flux_op; // Updater to add Apardot terms to fluxes. gkyl_dg_updater_gyrokinetic *slvr; // Collisionless solver. - + gkyl_dg_updater_gyrokinetic *add_apardot_slvr; // Solver to add Apardot terms to RHS. + // Methods chosen at runtime. void (*flux_func)(gkyl_gyrokinetic_app *app, struct gk_species *species, struct gk_collisionless *gkcls, const struct gkyl_array *fin); @@ -321,6 +321,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 (*add_apardot_rhs_func)(gkyl_gyrokinetic_app *app, struct gk_species *species, + 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, @@ -926,7 +928,6 @@ struct gk_positivity { struct gk_species { struct gkyl_gyrokinetic_species info; // Input data. int vdim; // Velocity space dimensions. - struct gkyl_basis basis; // Phase-space basis. // Basis on device (points to host basis if running w/o GPU). @@ -954,8 +955,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. @@ -1034,7 +1038,13 @@ 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, + 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); + void (*add_apardot_rhs_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); @@ -1212,11 +1222,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. struct gkyl_job_pool *job_pool; // Job pool // 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 @@ -1236,13 +1247,31 @@ 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_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 *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. @@ -1267,11 +1296,16 @@ struct gk_field { struct gkyl_array_integrate *calc_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 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 @@ -1287,7 +1321,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_T_LU_lo; // TS BC updater. // Objects used by the skin surface to ghost (SSFG) operator. @@ -1295,10 +1330,27 @@ struct gk_field { // Pointer to functions for the twist-and-shift BCs. void (*enforce_parallel_bc_func) (const gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *finout); + void (*enforce_parallel_bc_em_func) (const gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *finout); + 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); + void (*ohm_solve) (struct gkyl_gyrokinetic_app *app, struct gk_field *field); + 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[]); + void (*calc_energy_func) (gkyl_gyrokinetic_app *app, const struct gk_field *field, double tm); void (*accumulate_rhoc_func) (gkyl_gyrokinetic_app *app, struct gk_field *field, struct gk_species *s, struct gkyl_array **bflux); @@ -1768,6 +1820,30 @@ 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); +/** + * @brief Add Apardot electromagnetic contribution to the collisionless RHS. + * + * @param app Gyrokinetic app object. + * @param species Pointer to species. + * @param gkcls Species collisionless object. + * @param fin Input distribution function. + * @param rhs On output, the RHS from collisionless terms including EM contribution. + */ +void gk_species_collisionless_add_apardot_rhs(gkyl_gyrokinetic_app *app, struct gk_species *species, + struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs); + +/** + * @brief Add Apardot electromagnetic contribution to the collisionless RHS. + * + * @param app Gyrokinetic app object. + * @param species Pointer to species. + * @param gkcls Species collisionless object. + * @param fin Input distribution function. + * @param rhs On output, the RHS from collisionless terms including EM contribution. + */ +void gk_species_collisionless_add_apardot_rhs(gkyl_gyrokinetic_app *app, struct gk_species *species, + struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs); + /** * Write out diagnostics from the collisionless terms. * @@ -3018,9 +3094,46 @@ void gk_species_apply_ic_cross(gkyl_gyrokinetic_app *app, struct gk_species *spe * @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); + +/** + * Add the Apardot electromagnetic part of the RHS 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. + * @return Maximum stable time-step. + */ +void gk_species_add_apardot_rhs(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); /** @@ -3898,14 +4011,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 em Output field. */ +void gk_field_calc_apar_ic(gkyl_gyrokinetic_app *app, struct gk_field *field); + +/** + * 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. + */ 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. * @@ -3940,6 +4145,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. * @@ -3986,11 +4202,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 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 8065d8c90e..4cf56ad880 100644 --- a/gyrokinetic/apps/gyrokinetic.c +++ b/gyrokinetic/apps/gyrokinetic.c @@ -1228,6 +1228,27 @@ gkyl_gyrokinetic_app_write_field(gkyl_gyrokinetic_app* app, double tm, int frame gkyl_comm_array_write(app->comm, &app->grid, &app->local, mt, app->field->phi_host, fileNm); + if (app->field->is_em) { + // 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); + } + const char *fmt_apar = "%s-apar_%d.gkyl"; + int sz_apar = gkyl_calc_strlen(fmt_apar, app->name, frame); + char fileNm_apar[sz_apar+1]; // ensures no buffer overflow + snprintf(fileNm_apar, sizeof fileNm_apar, fmt_apar, app->name, frame); + + gkyl_comm_array_write(app->comm, &app->grid, &app->local, mt, app->field->apar_host, fileNm_apar); + + const char *fmt_apardot = "%s-apardot_%d.gkyl"; + int sz_apardot = gkyl_calc_strlen(fmt_apardot, app->name, frame); + char fileNm_apardot[sz_apardot+1]; // ensures no buffer overflow + snprintf(fileNm_apardot, sizeof fileNm_apardot, fmt_apardot, app->name, frame); + + gkyl_comm_array_write(app->comm, &app->grid, &app->local, mt, app->field->apardot_host, fileNm_apardot); + } + gk_array_meta_release(mt); app->stat.field_io_tm += gkyl_time_diff_now_sec(wtm); @@ -1248,6 +1269,7 @@ gkyl_gyrokinetic_app_calc_field_energy(gkyl_gyrokinetic_app* app, double tm) } } + void gkyl_gyrokinetic_app_write_field_energy(gkyl_gyrokinetic_app* app) { @@ -1259,22 +1281,46 @@ 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). gkyl_dynvec_write(app->field->integ_energy, fileNm0); + + 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; } 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. @@ -1296,6 +1342,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); @@ -1841,7 +1908,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; @@ -1885,8 +1953,8 @@ gyrokinetic_rhs(gkyl_gyrokinetic_app* app, double tcurr, double dt, // Compute df/dt (not including sources). 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]); + 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]; @@ -1904,6 +1972,25 @@ gyrokinetic_rhs(gkyl_gyrokinetic_app* app, double tcurr, double dt, &app->neut_species[i].src, fin_neut[i], fout_neut[i]); } + // Compute Apardot (solves Ohm's law using the previously built 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); + + // Add Apardot contributions to the collisionless update of charged species. + for (int i=0; inum_species; ++i) { + struct gk_species *gk_s = &app->species[i]; + gk_species_add_apardot_rhs(app, gk_s, fin[i], fout[i], bflux_out[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 by a factor. for (int i=0; inum_species; ++i) { struct gk_species *gks = &app->species[i]; diff --git a/gyrokinetic/apps/gyrokinetic_lw.c b/gyrokinetic/apps/gyrokinetic_lw.c index 5b11fe2417..61af730b18 100644 --- a/gyrokinetic/apps/gyrokinetic_lw.c +++ b/gyrokinetic/apps/gyrokinetic_lw.c @@ -58,7 +58,6 @@ 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 }, @@ -67,11 +66,12 @@ static const struct gkyl_str_int_pair gk_collisionless_type[] = { // 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 }, - { "ElectrostaticIWL", GKYL_GK_FIELD_ES_IWL }, + { "Inner wall limited", GKYL_GK_FIELD_IWL }, { "Electromagnetic", GKYL_GK_FIELD_EM }, + { "Electromagnetic Inner wall limited", GKYL_GK_FIELD_EM_IWL }, { 0, 0 } }; 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 5a76659633..6198691816 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. @@ -297,6 +317,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 3998e57831..a2412585c3 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 2bd0a10cce..b29ce0194d 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_em_alfven_1x2v_p1.c b/gyrokinetic/creg/rt_gk_em_alfven_1x2v_p1.c new file mode 100644 index 0000000000..74e5e59bbe --- /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 +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 *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. + // 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 rdvpar2Sq = rdvpar2*rdvpar2; + double dvparSq = dxv[1]*dxv[1]; + + const double *b_x = &b_i[0]; + const double *b_y = &b_i[2]; + const double *b_z = &b_i[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.}; + + + + double alphavpar[6] = {0.}; + + + + 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..459582a12d --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_1x2v_ser_p1.c @@ -0,0 +1,53 @@ +#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 *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. + // 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]; + + double rdvpar2Sq = rdvpar2*rdvpar2; + double dvparSq = dxv[1]*dxv[1]; + + const double *b_x = &b_i[0]; + const double *b_y = &b_i[2]; + const double *b_z = &b_i[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.}; + + + + double alphavpar[12] = {0.}; + + + + 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..7b32a1eb31 --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_2x2v_ser_p1.c @@ -0,0 +1,126 @@ +#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 *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. + // 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]; + + double rdvpar2Sq = rdvpar2*rdvpar2; + double dvparSq = dxv[2]*dxv[2]; + + const double *b_x = &b_i[0]; + const double *b_y = &b_i[4]; + const double *b_z = &b_i[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*apar[2]*b_y[3]*hamil[3]*jacobtot_inv[3])-0.6123724356957944*b_y[2]*apar[3]*hamil[3]*jacobtot_inv[3]-0.6123724356957944*jacobtot_inv[2]*apar[3]*b_y[3]*hamil[3]-0.3061862178478971*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[3]-0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[3]-0.3061862178478971*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[3]-0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[3]-0.6123724356957944*apar[2]*b_y[2]*jacobtot_inv[2]*hamil[3]-0.3061862178478971*apar[1]*jacobtot_inv[1]*b_y[2]*hamil[3]-0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[2]*hamil[3]-0.3061862178478971*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[3]-0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[2]*hamil[3])*rdx2*rdz2)/(vmap[1]*m_); + alphax[1] = ((-(1.1022703842524295*apar[3]*b_y[3]*hamil[3]*jacobtot_inv[3])-0.6123724356957944*apar[2]*b_y[2]*hamil[3]*jacobtot_inv[3]-0.6123724356957944*apar[2]*jacobtot_inv[2]*b_y[3]*hamil[3]-0.5511351921262146*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[3]-0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[3]-0.6123724356957944*b_y[2]*jacobtot_inv[2]*apar[3]*hamil[3]-0.5511351921262146*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[3]-0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[3]-0.3061862178478971*apar[0]*jacobtot_inv[1]*b_y[2]*hamil[3]-0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[2]*hamil[3]-0.3061862178478971*b_y[0]*jacobtot_inv[1]*apar[2]*hamil[3]-0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[3])*rdx2*rdz2)/(vmap[1]*m_); + alphax[2] = ((-(0.3061862178478971*apar[0]*b_y[3]*hamil[3]*jacobtot_inv[3])-0.3061862178478971*b_y[0]*apar[3]*hamil[3]*jacobtot_inv[3]-0.3061862178478971*apar[1]*b_y[2]*hamil[3]*jacobtot_inv[3]-0.3061862178478971*b_y[1]*apar[2]*hamil[3]*jacobtot_inv[3]-0.6123724356957944*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[3]-0.3061862178478971*apar[1]*jacobtot_inv[2]*b_y[3]*hamil[3]-0.6123724356957944*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[3]-0.3061862178478971*b_y[1]*jacobtot_inv[2]*apar[3]*hamil[3]-0.6123724356957944*jacobtot_inv[1]*b_y[2]*apar[3]*hamil[3]-0.3061862178478971*apar[0]*b_y[2]*jacobtot_inv[2]*hamil[3]-0.3061862178478971*b_y[0]*apar[2]*jacobtot_inv[2]*hamil[3]-0.6123724356957944*jacobtot_inv[0]*apar[2]*b_y[2]*hamil[3])*rdx2*rdz2)/(vmap[1]*m_); + alphax[3] = ((-(1.369306393762915*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[16])-1.369306393762915*b_y[2]*apar[3]*jacobtot_inv[3]*hamil[16]-1.369306393762915*jacobtot_inv[2]*apar[3]*b_y[3]*hamil[16]-0.6846531968814573*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[16]-0.6846531968814573*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[16]-0.6846531968814573*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[16]-0.6846531968814573*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[16]-1.369306393762915*apar[2]*b_y[2]*jacobtot_inv[2]*hamil[16]-0.6846531968814573*apar[1]*jacobtot_inv[1]*b_y[2]*hamil[16]-0.6846531968814573*apar[0]*jacobtot_inv[0]*b_y[2]*hamil[16]-0.6846531968814573*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[16]-0.6846531968814573*b_y[0]*jacobtot_inv[0]*apar[2]*hamil[16])*rdx2*rdz2)/(vmap[1]*m_); + alphax[5] = ((-(0.5511351921262146*apar[1]*b_y[3]*hamil[3]*jacobtot_inv[3])-0.5511351921262146*b_y[1]*apar[3]*hamil[3]*jacobtot_inv[3]-0.3061862178478971*apar[0]*b_y[2]*hamil[3]*jacobtot_inv[3]-0.3061862178478971*b_y[0]*apar[2]*hamil[3]*jacobtot_inv[3]-1.1022703842524295*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[3]-0.3061862178478971*apar[0]*jacobtot_inv[2]*b_y[3]*hamil[3]-0.6123724356957944*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[3]-0.3061862178478971*b_y[0]*jacobtot_inv[2]*apar[3]*hamil[3]-0.6123724356957944*jacobtot_inv[0]*b_y[2]*apar[3]*hamil[3]-0.3061862178478971*apar[1]*b_y[2]*jacobtot_inv[2]*hamil[3]-0.3061862178478971*b_y[1]*apar[2]*jacobtot_inv[2]*hamil[3]-0.6123724356957944*jacobtot_inv[1]*apar[2]*b_y[2]*hamil[3])*rdx2*rdz2)/(vmap[1]*m_); + alphax[6] = ((-(2.4647515087732463*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[16])-1.369306393762915*apar[2]*b_y[2]*jacobtot_inv[3]*hamil[16]-1.369306393762915*apar[2]*jacobtot_inv[2]*b_y[3]*hamil[16]-1.232375754386623*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[16]-0.6846531968814573*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[16]-1.369306393762915*b_y[2]*jacobtot_inv[2]*apar[3]*hamil[16]-1.232375754386623*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[16]-0.6846531968814573*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[16]-0.6846531968814573*apar[0]*jacobtot_inv[1]*b_y[2]*hamil[16]-0.6846531968814573*jacobtot_inv[0]*apar[1]*b_y[2]*hamil[16]-0.6846531968814573*b_y[0]*jacobtot_inv[1]*apar[2]*hamil[16]-0.6846531968814573*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[16])*rdx2*rdz2)/(vmap[1]*m_); + alphax[7] = ((-(0.6846531968814573*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[16])-0.6846531968814573*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[16]-0.6846531968814573*apar[1]*b_y[2]*jacobtot_inv[3]*hamil[16]-0.6846531968814573*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[16]-1.369306393762915*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[16]-0.6846531968814573*apar[1]*jacobtot_inv[2]*b_y[3]*hamil[16]-1.369306393762915*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[16]-0.6846531968814573*b_y[1]*jacobtot_inv[2]*apar[3]*hamil[16]-1.369306393762915*jacobtot_inv[1]*b_y[2]*apar[3]*hamil[16]-0.6846531968814573*apar[0]*b_y[2]*jacobtot_inv[2]*hamil[16]-0.6846531968814573*b_y[0]*apar[2]*jacobtot_inv[2]*hamil[16]-1.369306393762915*jacobtot_inv[0]*apar[2]*b_y[2]*hamil[16])*rdx2*rdz2)/(vmap[1]*m_); + alphax[11] = ((-(1.232375754386623*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[16])-1.232375754386623*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[16]-0.6846531968814573*apar[0]*b_y[2]*jacobtot_inv[3]*hamil[16]-0.6846531968814573*b_y[0]*apar[2]*jacobtot_inv[3]*hamil[16]-2.4647515087732463*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[16]-0.6846531968814573*apar[0]*jacobtot_inv[2]*b_y[3]*hamil[16]-1.369306393762915*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[16]-0.6846531968814573*b_y[0]*jacobtot_inv[2]*apar[3]*hamil[16]-1.369306393762915*jacobtot_inv[0]*b_y[2]*apar[3]*hamil[16]-0.6846531968814573*apar[1]*b_y[2]*jacobtot_inv[2]*hamil[16]-0.6846531968814573*b_y[1]*apar[2]*jacobtot_inv[2]*hamil[16]-1.369306393762915*jacobtot_inv[1]*apar[2]*b_y[2]*hamil[16])*rdx2*rdz2)/(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*apar[1]*b_y[3]*hamil[3]*jacobtot_inv[3]+0.6123724356957944*b_y[1]*apar[3]*hamil[3]*jacobtot_inv[3]+0.6123724356957944*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[3]+0.3061862178478971*apar[0]*jacobtot_inv[2]*b_y[3]*hamil[3]+0.3061862178478971*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[3]+0.3061862178478971*b_y[0]*jacobtot_inv[2]*apar[3]*hamil[3]+0.3061862178478971*jacobtot_inv[0]*b_y[2]*apar[3]*hamil[3]+0.3061862178478971*apar[1]*b_y[2]*jacobtot_inv[2]*hamil[3]+0.3061862178478971*b_y[1]*apar[2]*jacobtot_inv[2]*hamil[3]+0.6123724356957944*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[3]+0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[3]+0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[3])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[1] = ((0.3061862178478971*apar[0]*b_y[3]*hamil[3]*jacobtot_inv[3]+0.3061862178478971*b_y[0]*apar[3]*hamil[3]*jacobtot_inv[3]+0.3061862178478971*apar[1]*b_y[2]*hamil[3]*jacobtot_inv[3]+0.3061862178478971*b_y[1]*apar[2]*hamil[3]*jacobtot_inv[3]+0.6123724356957944*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[3]+0.6123724356957944*apar[1]*jacobtot_inv[2]*b_y[3]*hamil[3]+0.3061862178478971*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[3]+0.6123724356957944*b_y[1]*jacobtot_inv[2]*apar[3]*hamil[3]+0.3061862178478971*jacobtot_inv[1]*b_y[2]*apar[3]*hamil[3]+0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[3]+0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[3]+0.6123724356957944*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[3])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[2] = ((1.1022703842524295*apar[3]*b_y[3]*hamil[3]*jacobtot_inv[3]+0.6123724356957944*apar[1]*b_y[1]*hamil[3]*jacobtot_inv[3]+0.5511351921262146*apar[2]*jacobtot_inv[2]*b_y[3]*hamil[3]+0.6123724356957944*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[3]+0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[3]+0.5511351921262146*b_y[2]*jacobtot_inv[2]*apar[3]*hamil[3]+0.6123724356957944*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[3]+0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[3]+0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[2]*hamil[3]+0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[2]*hamil[3]+0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[2]*hamil[3]+0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[3])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[3] = ((1.369306393762915*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[16]+1.369306393762915*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[16]+1.369306393762915*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[16]+0.6846531968814573*apar[0]*jacobtot_inv[2]*b_y[3]*hamil[16]+0.6846531968814573*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[16]+0.6846531968814573*b_y[0]*jacobtot_inv[2]*apar[3]*hamil[16]+0.6846531968814573*jacobtot_inv[0]*b_y[2]*apar[3]*hamil[16]+0.6846531968814573*apar[1]*b_y[2]*jacobtot_inv[2]*hamil[16]+0.6846531968814573*b_y[1]*apar[2]*jacobtot_inv[2]*hamil[16]+1.369306393762915*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[16]+0.6846531968814573*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[16]+0.6846531968814573*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[16])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[5] = ((0.5511351921262146*apar[2]*b_y[3]*hamil[3]*jacobtot_inv[3]+0.5511351921262146*b_y[2]*apar[3]*hamil[3]*jacobtot_inv[3]+0.3061862178478971*apar[0]*b_y[1]*hamil[3]*jacobtot_inv[3]+0.3061862178478971*b_y[0]*apar[1]*hamil[3]*jacobtot_inv[3]+1.1022703842524295*jacobtot_inv[2]*apar[3]*b_y[3]*hamil[3]+0.3061862178478971*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[3]+0.6123724356957944*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[3]+0.3061862178478971*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[3]+0.6123724356957944*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[3]+0.6123724356957944*apar[1]*b_y[1]*jacobtot_inv[2]*hamil[3]+0.3061862178478971*apar[1]*jacobtot_inv[1]*b_y[2]*hamil[3]+0.3061862178478971*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[3])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[6] = ((0.6846531968814573*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[16]+0.6846531968814573*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[16]+0.6846531968814573*apar[1]*b_y[2]*jacobtot_inv[3]*hamil[16]+0.6846531968814573*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[16]+1.369306393762915*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[16]+1.369306393762915*apar[1]*jacobtot_inv[2]*b_y[3]*hamil[16]+0.6846531968814573*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[16]+1.369306393762915*b_y[1]*jacobtot_inv[2]*apar[3]*hamil[16]+0.6846531968814573*jacobtot_inv[1]*b_y[2]*apar[3]*hamil[16]+0.6846531968814573*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[16]+0.6846531968814573*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[16]+1.369306393762915*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[16])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[7] = ((2.4647515087732463*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[16]+1.369306393762915*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[16]+1.232375754386623*apar[2]*jacobtot_inv[2]*b_y[3]*hamil[16]+1.369306393762915*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[16]+0.6846531968814573*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[16]+1.232375754386623*b_y[2]*jacobtot_inv[2]*apar[3]*hamil[16]+1.369306393762915*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[16]+0.6846531968814573*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[16]+0.6846531968814573*apar[0]*b_y[1]*jacobtot_inv[2]*hamil[16]+0.6846531968814573*b_y[0]*apar[1]*jacobtot_inv[2]*hamil[16]+0.6846531968814573*jacobtot_inv[0]*apar[1]*b_y[2]*hamil[16]+0.6846531968814573*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[16])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[11] = ((1.232375754386623*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[16]+1.232375754386623*b_y[2]*apar[3]*jacobtot_inv[3]*hamil[16]+0.6846531968814573*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[16]+0.6846531968814573*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[16]+2.4647515087732463*jacobtot_inv[2]*apar[3]*b_y[3]*hamil[16]+0.6846531968814573*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[16]+1.369306393762915*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[16]+0.6846531968814573*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[16]+1.369306393762915*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[16]+1.369306393762915*apar[1]*b_y[1]*jacobtot_inv[2]*hamil[16]+0.6846531968814573*apar[1]*jacobtot_inv[1]*b_y[2]*hamil[16]+0.6846531968814573*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[16])*rdx2*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.3061862178478971*apar[1]*jacobtot_inv[2]*b_y[3]*hamil[5])+0.3061862178478971*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[5]-0.3061862178478971*b_y[1]*jacobtot_inv[2]*apar[3]*hamil[5]+0.3061862178478971*jacobtot_inv[1]*b_y[2]*apar[3]*hamil[5]+0.3061862178478971*apar[0]*b_y[2]*jacobtot_inv[2]*hamil[5]+0.3061862178478971*b_y[0]*apar[2]*jacobtot_inv[2]*hamil[5]+0.6123724356957944*jacobtot_inv[0]*apar[2]*b_y[2]*hamil[5]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[5]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[5]-0.6123724356957944*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[5]-0.6123724356957944*apar[1]*hamil[2]*b_y[3]*jacobtot_inv[3]+0.6123724356957944*hamil[1]*apar[2]*b_y[3]*jacobtot_inv[3]-0.6123724356957944*b_y[1]*hamil[2]*apar[3]*jacobtot_inv[3]+0.6123724356957944*hamil[1]*b_y[2]*apar[3]*jacobtot_inv[3]+0.6123724356957944*hamil[1]*jacobtot_inv[2]*apar[3]*b_y[3]-0.6123724356957944*jacobtot_inv[1]*hamil[2]*apar[3]*b_y[3]-0.3061862178478971*apar[0]*hamil[2]*jacobtot_inv[2]*b_y[3]-0.3061862178478971*jacobtot_inv[0]*apar[2]*hamil[2]*b_y[3]+0.3061862178478971*apar[0]*hamil[1]*jacobtot_inv[1]*b_y[3]+0.3061862178478971*jacobtot_inv[0]*apar[1]*hamil[1]*b_y[3]-0.3061862178478971*b_y[0]*hamil[2]*jacobtot_inv[2]*apar[3]-0.3061862178478971*jacobtot_inv[0]*b_y[2]*hamil[2]*apar[3]+0.3061862178478971*b_y[0]*hamil[1]*jacobtot_inv[1]*apar[3]+0.3061862178478971*jacobtot_inv[0]*b_y[1]*hamil[1]*apar[3]-0.3061862178478971*apar[1]*b_y[2]*hamil[2]*jacobtot_inv[2]-0.3061862178478971*b_y[1]*apar[2]*hamil[2]*jacobtot_inv[2]+0.6123724356957944*hamil[1]*apar[2]*b_y[2]*jacobtot_inv[2]-0.6123724356957944*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[2]-0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[2]-0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[2]+0.3061862178478971*apar[1]*hamil[1]*jacobtot_inv[1]*b_y[2]+0.3061862178478971*apar[0]*jacobtot_inv[0]*hamil[1]*b_y[2]+0.3061862178478971*b_y[1]*hamil[1]*jacobtot_inv[1]*apar[2]+0.3061862178478971*b_y[0]*jacobtot_inv[0]*hamil[1]*apar[2])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[1] = ((-(0.5511351921262146*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[5])-0.5511351921262146*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[5]+0.3061862178478971*apar[0]*b_y[2]*jacobtot_inv[3]*hamil[5]+0.3061862178478971*b_y[0]*apar[2]*jacobtot_inv[3]*hamil[5]+0.3061862178478971*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[5]+0.3061862178478971*jacobtot_inv[0]*b_y[2]*apar[3]*hamil[5]+0.6123724356957944*jacobtot_inv[1]*apar[2]*b_y[2]*hamil[5]-1.1022703842524295*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[5]-0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[5]-0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[5]+1.1022703842524295*hamil[1]*apar[3]*b_y[3]*jacobtot_inv[3]-0.3061862178478971*apar[0]*hamil[2]*b_y[3]*jacobtot_inv[3]-0.3061862178478971*b_y[0]*hamil[2]*apar[3]*jacobtot_inv[3]-0.3061862178478971*apar[1]*b_y[2]*hamil[2]*jacobtot_inv[3]-0.3061862178478971*b_y[1]*apar[2]*hamil[2]*jacobtot_inv[3]+0.6123724356957944*hamil[1]*apar[2]*b_y[2]*jacobtot_inv[3]-0.6123724356957944*jacobtot_inv[0]*hamil[2]*apar[3]*b_y[3]-0.6123724356957944*apar[1]*hamil[2]*jacobtot_inv[2]*b_y[3]+0.6123724356957944*hamil[1]*apar[2]*jacobtot_inv[2]*b_y[3]-0.3061862178478971*jacobtot_inv[1]*apar[2]*hamil[2]*b_y[3]+0.5511351921262146*apar[1]*hamil[1]*jacobtot_inv[1]*b_y[3]+0.3061862178478971*apar[0]*jacobtot_inv[0]*hamil[1]*b_y[3]-0.6123724356957944*b_y[1]*hamil[2]*jacobtot_inv[2]*apar[3]+0.6123724356957944*hamil[1]*b_y[2]*jacobtot_inv[2]*apar[3]-0.3061862178478971*jacobtot_inv[1]*b_y[2]*hamil[2]*apar[3]+0.5511351921262146*b_y[1]*hamil[1]*jacobtot_inv[1]*apar[3]+0.3061862178478971*b_y[0]*jacobtot_inv[0]*hamil[1]*apar[3]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[2]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[2]-0.6123724356957944*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[2]+0.3061862178478971*apar[0]*hamil[1]*jacobtot_inv[1]*b_y[2]+0.3061862178478971*jacobtot_inv[0]*apar[1]*hamil[1]*b_y[2]+0.3061862178478971*b_y[0]*hamil[1]*jacobtot_inv[1]*apar[2]+0.3061862178478971*jacobtot_inv[0]*b_y[1]*hamil[1]*apar[2])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[2] = ((0.5511351921262146*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[5]+0.5511351921262146*b_y[2]*apar[3]*jacobtot_inv[3]*hamil[5]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[5]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[5]-0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[5]-0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[5]+1.1022703842524295*apar[2]*b_y[2]*jacobtot_inv[2]*hamil[5]-0.6123724356957944*apar[1]*b_y[1]*jacobtot_inv[2]*hamil[5]+0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[2]*hamil[5]+0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[2]*hamil[5]-1.1022703842524295*hamil[2]*apar[3]*b_y[3]*jacobtot_inv[3]+0.3061862178478971*apar[0]*hamil[1]*b_y[3]*jacobtot_inv[3]+0.3061862178478971*b_y[0]*hamil[1]*apar[3]*jacobtot_inv[3]-0.6123724356957944*apar[1]*b_y[1]*hamil[2]*jacobtot_inv[3]+0.3061862178478971*apar[1]*hamil[1]*b_y[2]*jacobtot_inv[3]+0.3061862178478971*b_y[1]*hamil[1]*apar[2]*jacobtot_inv[3]+0.6123724356957944*jacobtot_inv[0]*hamil[1]*apar[3]*b_y[3]-0.5511351921262146*apar[2]*hamil[2]*jacobtot_inv[2]*b_y[3]+0.3061862178478971*apar[1]*hamil[1]*jacobtot_inv[2]*b_y[3]-0.6123724356957944*apar[1]*jacobtot_inv[1]*hamil[2]*b_y[3]-0.3061862178478971*apar[0]*jacobtot_inv[0]*hamil[2]*b_y[3]+0.6123724356957944*hamil[1]*jacobtot_inv[1]*apar[2]*b_y[3]-0.5511351921262146*b_y[2]*hamil[2]*jacobtot_inv[2]*apar[3]+0.3061862178478971*b_y[1]*hamil[1]*jacobtot_inv[2]*apar[3]-0.6123724356957944*b_y[1]*jacobtot_inv[1]*hamil[2]*apar[3]-0.3061862178478971*b_y[0]*jacobtot_inv[0]*hamil[2]*apar[3]+0.6123724356957944*hamil[1]*jacobtot_inv[1]*b_y[2]*apar[3]-0.3061862178478971*apar[0]*b_y[1]*hamil[2]*jacobtot_inv[2]-0.3061862178478971*b_y[0]*apar[1]*hamil[2]*jacobtot_inv[2]+0.3061862178478971*apar[0]*hamil[1]*b_y[2]*jacobtot_inv[2]+0.3061862178478971*b_y[0]*hamil[1]*apar[2]*jacobtot_inv[2]-0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[2]*hamil[2]-0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[2]+0.6123724356957944*jacobtot_inv[0]*hamil[1]*apar[2]*b_y[2])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[4] = ((-(0.3061862178478971*apar[1]*jacobtot_inv[2]*b_y[3]*hamil[12])+0.3061862178478971*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[12]-0.3061862178478971*b_y[1]*jacobtot_inv[2]*apar[3]*hamil[12]+0.3061862178478971*jacobtot_inv[1]*b_y[2]*apar[3]*hamil[12]+0.3061862178478971*apar[0]*b_y[2]*jacobtot_inv[2]*hamil[12]+0.3061862178478971*b_y[0]*apar[2]*jacobtot_inv[2]*hamil[12]+0.6123724356957944*jacobtot_inv[0]*apar[2]*b_y[2]*hamil[12]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[12]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[12]-0.6123724356957944*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[12]-0.6123724356957944*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[9]-0.6123724356957944*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[9]-0.6123724356957944*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[9]-0.3061862178478971*apar[0]*jacobtot_inv[2]*b_y[3]*hamil[9]-0.3061862178478971*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[9]-0.3061862178478971*b_y[0]*jacobtot_inv[2]*apar[3]*hamil[9]-0.3061862178478971*jacobtot_inv[0]*b_y[2]*apar[3]*hamil[9]-0.3061862178478971*apar[1]*b_y[2]*jacobtot_inv[2]*hamil[9]-0.3061862178478971*b_y[1]*apar[2]*jacobtot_inv[2]*hamil[9]-0.6123724356957944*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[9]-0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[9]-0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[9]+0.6123724356957944*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[8]+0.6123724356957944*b_y[2]*apar[3]*jacobtot_inv[3]*hamil[8]+0.6123724356957944*jacobtot_inv[2]*apar[3]*b_y[3]*hamil[8]+0.3061862178478971*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[8]+0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[8]+0.3061862178478971*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[8]+0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[8]+0.6123724356957944*apar[2]*b_y[2]*jacobtot_inv[2]*hamil[8]+0.3061862178478971*apar[1]*jacobtot_inv[1]*b_y[2]*hamil[8]+0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[2]*hamil[8]+0.3061862178478971*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[8]+0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[2]*hamil[8])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[5] = ((1.1022703842524295*apar[2]*b_y[2]*jacobtot_inv[3]*hamil[5]-1.1022703842524295*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[5]+0.5511351921262146*apar[2]*jacobtot_inv[2]*b_y[3]*hamil[5]-0.5511351921262146*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[5]+0.5511351921262146*b_y[2]*jacobtot_inv[2]*apar[3]*hamil[5]-0.5511351921262146*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[5]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[2]*hamil[5]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[2]*hamil[5]+0.3061862178478971*apar[0]*jacobtot_inv[1]*b_y[2]*hamil[5]+0.3061862178478971*b_y[0]*jacobtot_inv[1]*apar[2]*hamil[5]-0.5511351921262146*apar[2]*hamil[2]*b_y[3]*jacobtot_inv[3]+0.5511351921262146*apar[1]*hamil[1]*b_y[3]*jacobtot_inv[3]-0.5511351921262146*b_y[2]*hamil[2]*apar[3]*jacobtot_inv[3]+0.5511351921262146*b_y[1]*hamil[1]*apar[3]*jacobtot_inv[3]-0.3061862178478971*apar[0]*b_y[1]*hamil[2]*jacobtot_inv[3]-0.3061862178478971*b_y[0]*apar[1]*hamil[2]*jacobtot_inv[3]+0.3061862178478971*apar[0]*hamil[1]*b_y[2]*jacobtot_inv[3]+0.3061862178478971*b_y[0]*hamil[1]*apar[2]*jacobtot_inv[3]-1.1022703842524295*hamil[2]*jacobtot_inv[2]*apar[3]*b_y[3]+1.1022703842524295*hamil[1]*jacobtot_inv[1]*apar[3]*b_y[3]+0.3061862178478971*apar[0]*hamil[1]*jacobtot_inv[2]*b_y[3]-0.3061862178478971*apar[0]*jacobtot_inv[1]*hamil[2]*b_y[3]-0.6123724356957944*jacobtot_inv[0]*apar[1]*hamil[2]*b_y[3]+0.6123724356957944*jacobtot_inv[0]*hamil[1]*apar[2]*b_y[3]+0.3061862178478971*b_y[0]*hamil[1]*jacobtot_inv[2]*apar[3]-0.3061862178478971*b_y[0]*jacobtot_inv[1]*hamil[2]*apar[3]-0.6123724356957944*jacobtot_inv[0]*b_y[1]*hamil[2]*apar[3]+0.6123724356957944*jacobtot_inv[0]*hamil[1]*b_y[2]*apar[3]-0.6123724356957944*apar[1]*b_y[1]*hamil[2]*jacobtot_inv[2]+0.3061862178478971*apar[1]*hamil[1]*b_y[2]*jacobtot_inv[2]+0.3061862178478971*b_y[1]*hamil[1]*apar[2]*jacobtot_inv[2]-0.3061862178478971*apar[1]*jacobtot_inv[1]*b_y[2]*hamil[2]-0.3061862178478971*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[2]+0.6123724356957944*hamil[1]*jacobtot_inv[1]*apar[2]*b_y[2])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[8] = ((-(0.5511351921262146*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[12])-0.5511351921262146*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[12]+0.3061862178478971*apar[0]*b_y[2]*jacobtot_inv[3]*hamil[12]+0.3061862178478971*b_y[0]*apar[2]*jacobtot_inv[3]*hamil[12]+0.3061862178478971*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[12]+0.3061862178478971*jacobtot_inv[0]*b_y[2]*apar[3]*hamil[12]+0.6123724356957944*jacobtot_inv[1]*apar[2]*b_y[2]*hamil[12]-1.1022703842524295*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[12]-0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[12]-0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[12]-0.3061862178478971*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[9]-0.3061862178478971*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[9]-0.3061862178478971*apar[1]*b_y[2]*jacobtot_inv[3]*hamil[9]-0.3061862178478971*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[9]-0.6123724356957944*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[9]-0.6123724356957944*apar[1]*jacobtot_inv[2]*b_y[3]*hamil[9]-0.3061862178478971*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[9]-0.6123724356957944*b_y[1]*jacobtot_inv[2]*apar[3]*hamil[9]-0.3061862178478971*jacobtot_inv[1]*b_y[2]*apar[3]*hamil[9]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[9]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[9]-0.6123724356957944*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[9]+1.1022703842524295*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[8]+0.6123724356957944*apar[2]*b_y[2]*jacobtot_inv[3]*hamil[8]+0.6123724356957944*apar[2]*jacobtot_inv[2]*b_y[3]*hamil[8]+0.5511351921262146*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[8]+0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[8]+0.6123724356957944*b_y[2]*jacobtot_inv[2]*apar[3]*hamil[8]+0.5511351921262146*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[8]+0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[8]+0.3061862178478971*apar[0]*jacobtot_inv[1]*b_y[2]*hamil[8]+0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[2]*hamil[8]+0.3061862178478971*b_y[0]*jacobtot_inv[1]*apar[2]*hamil[8]+0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[8])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[9] = ((0.5511351921262146*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[12]+0.5511351921262146*b_y[2]*apar[3]*jacobtot_inv[3]*hamil[12]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[12]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[12]-0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[12]-0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[12]+1.1022703842524295*apar[2]*b_y[2]*jacobtot_inv[2]*hamil[12]-0.6123724356957944*apar[1]*b_y[1]*jacobtot_inv[2]*hamil[12]+0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[2]*hamil[12]+0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[2]*hamil[12]-1.1022703842524295*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[9]-0.6123724356957944*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[9]-0.5511351921262146*apar[2]*jacobtot_inv[2]*b_y[3]*hamil[9]-0.6123724356957944*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[9]-0.3061862178478971*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[9]-0.5511351921262146*b_y[2]*jacobtot_inv[2]*apar[3]*hamil[9]-0.6123724356957944*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[9]-0.3061862178478971*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[9]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[2]*hamil[9]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[2]*hamil[9]-0.3061862178478971*jacobtot_inv[0]*apar[1]*b_y[2]*hamil[9]-0.3061862178478971*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[9]+0.3061862178478971*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[8]+0.3061862178478971*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[8]+0.3061862178478971*apar[1]*b_y[2]*jacobtot_inv[3]*hamil[8]+0.3061862178478971*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[8]+0.6123724356957944*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[8]+0.3061862178478971*apar[1]*jacobtot_inv[2]*b_y[3]*hamil[8]+0.6123724356957944*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[8]+0.3061862178478971*b_y[1]*jacobtot_inv[2]*apar[3]*hamil[8]+0.6123724356957944*jacobtot_inv[1]*b_y[2]*apar[3]*hamil[8]+0.3061862178478971*apar[0]*b_y[2]*jacobtot_inv[2]*hamil[8]+0.3061862178478971*b_y[0]*apar[2]*jacobtot_inv[2]*hamil[8]+0.6123724356957944*jacobtot_inv[0]*apar[2]*b_y[2]*hamil[8])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[12] = ((1.1022703842524295*apar[2]*b_y[2]*jacobtot_inv[3]*hamil[12]-1.1022703842524295*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[12]+0.5511351921262146*apar[2]*jacobtot_inv[2]*b_y[3]*hamil[12]-0.5511351921262146*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[12]+0.5511351921262146*b_y[2]*jacobtot_inv[2]*apar[3]*hamil[12]-0.5511351921262146*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[12]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[2]*hamil[12]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[2]*hamil[12]+0.3061862178478971*apar[0]*jacobtot_inv[1]*b_y[2]*hamil[12]+0.3061862178478971*b_y[0]*jacobtot_inv[1]*apar[2]*hamil[12]-0.5511351921262146*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[9]-0.5511351921262146*b_y[2]*apar[3]*jacobtot_inv[3]*hamil[9]-0.3061862178478971*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[9]-0.3061862178478971*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[9]-1.1022703842524295*jacobtot_inv[2]*apar[3]*b_y[3]*hamil[9]-0.3061862178478971*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[9]-0.6123724356957944*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[9]-0.3061862178478971*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[9]-0.6123724356957944*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[9]-0.6123724356957944*apar[1]*b_y[1]*jacobtot_inv[2]*hamil[9]-0.3061862178478971*apar[1]*jacobtot_inv[1]*b_y[2]*hamil[9]-0.3061862178478971*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[9]+0.5511351921262146*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[8]+0.5511351921262146*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[8]+0.3061862178478971*apar[0]*b_y[2]*jacobtot_inv[3]*hamil[8]+0.3061862178478971*b_y[0]*apar[2]*jacobtot_inv[3]*hamil[8]+1.1022703842524295*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[8]+0.3061862178478971*apar[0]*jacobtot_inv[2]*b_y[3]*hamil[8]+0.6123724356957944*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[8]+0.3061862178478971*b_y[0]*jacobtot_inv[2]*apar[3]*hamil[8]+0.6123724356957944*jacobtot_inv[0]*b_y[2]*apar[3]*hamil[8]+0.3061862178478971*apar[1]*b_y[2]*jacobtot_inv[2]*hamil[8]+0.3061862178478971*b_y[1]*apar[2]*jacobtot_inv[2]*hamil[8]+0.6123724356957944*jacobtot_inv[1]*apar[2]*b_y[2]*hamil[8])*rdx2*rdz2)/(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..705fe962bd --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_3x2v_ser_p1.c @@ -0,0 +1,239 @@ +#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 *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. + // 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]; + + double rdvpar2Sq = rdvpar2*rdvpar2; + double dvparSq = dxv[3]*dxv[3]; + + const double *b_x = &b_i[0]; + const double *b_y = &b_i[8]; + const double *b_z = &b_i[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.21650635094610965*apar[3]*hamil[4]*b_y[5]*jacobtot_inv[5])-0.21650635094610965*b_y[3]*hamil[4]*apar[5]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[3]*hamil[4]*apar[5]*b_y[5]-0.10825317547305482*apar[0]*jacobtot_inv[1]*hamil[4]*b_y[5]-0.10825317547305482*jacobtot_inv[0]*apar[1]*hamil[4]*b_y[5]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[4]*apar[5]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[4]*apar[5]-0.21650635094610965*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[4]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[4]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[4]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.10825317547305482*b_z[0]*hamil[4]*jacobtot_inv[5]*apar[7]+0.10825317547305482*jacobtot_inv[0]*hamil[4]*b_z[5]*apar[7]+0.10825317547305482*b_z[1]*jacobtot_inv[3]*hamil[4]*apar[7]+0.10825317547305482*jacobtot_inv[1]*b_z[3]*hamil[4]*apar[7]+0.10825317547305482*b_z[1]*hamil[4]*jacobtot_inv[5]*apar[6]+0.10825317547305482*jacobtot_inv[1]*hamil[4]*b_z[5]*apar[6]+0.10825317547305482*b_z[0]*jacobtot_inv[3]*hamil[4]*apar[6]+0.10825317547305482*jacobtot_inv[0]*b_z[3]*hamil[4]*apar[6]+0.10825317547305482*apar[2]*hamil[4]*b_z[5]*jacobtot_inv[5]+0.10825317547305482*b_z[3]*apar[4]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*jacobtot_inv[3]*apar[4]*hamil[4]*b_z[5]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[4]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[4]+0.10825317547305482*apar[2]*b_z[3]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[4]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[2]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphax[1] = (((-(0.38971143170299727*hamil[4]*apar[5]*b_y[5]*jacobtot_inv[5])-0.21650635094610965*apar[3]*b_y[3]*hamil[4]*jacobtot_inv[5]-0.21650635094610965*apar[3]*jacobtot_inv[3]*hamil[4]*b_y[5]-0.19485571585149863*apar[1]*jacobtot_inv[1]*hamil[4]*b_y[5]-0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[4]*b_y[5]-0.21650635094610965*b_y[3]*jacobtot_inv[3]*hamil[4]*apar[5]-0.19485571585149863*b_y[1]*jacobtot_inv[1]*hamil[4]*apar[5]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[4]*apar[5]-0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[4]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.19485571585149863*b_z[1]*hamil[4]*jacobtot_inv[5]*apar[7]+0.19485571585149863*jacobtot_inv[1]*hamil[4]*b_z[5]*apar[7]+0.10825317547305482*b_z[0]*jacobtot_inv[3]*hamil[4]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_z[3]*hamil[4]*apar[7]+0.10825317547305482*b_z[0]*hamil[4]*jacobtot_inv[5]*apar[6]+0.10825317547305482*jacobtot_inv[0]*hamil[4]*b_z[5]*apar[6]+0.10825317547305482*b_z[1]*jacobtot_inv[3]*hamil[4]*apar[6]+0.10825317547305482*jacobtot_inv[1]*b_z[3]*hamil[4]*apar[6]+0.19485571585149863*apar[4]*hamil[4]*b_z[5]*jacobtot_inv[5]+0.10825317547305482*apar[2]*b_z[3]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*apar[2]*jacobtot_inv[3]*hamil[4]*b_z[5]+0.10825317547305482*b_z[3]*jacobtot_inv[3]*apar[4]*hamil[4]+0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[4]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[4]*hamil[4]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[2]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphax[2] = ((-(0.21650635094610965*b_y[3]*hamil[4]*jacobtot_inv[5]*apar[7])-0.21650635094610965*jacobtot_inv[3]*hamil[4]*b_y[5]*apar[7]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[4]*apar[7]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[4]*apar[7]-0.21650635094610965*hamil[4]*b_y[5]*jacobtot_inv[5]*apar[6]-0.21650635094610965*b_y[3]*jacobtot_inv[3]*hamil[4]*apar[6]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*hamil[4]*apar[6]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[4]*apar[6]-0.10825317547305482*jacobtot_inv[0]*apar[4]*hamil[4]*b_y[5]-0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[4]*b_y[5]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[4]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[4])*rdx2*rdz2)/(vmap[1]*m_); + alphax[3] = (((-(0.10825317547305482*apar[0]*hamil[4]*b_y[5]*jacobtot_inv[5])-0.10825317547305482*b_y[0]*hamil[4]*apar[5]*jacobtot_inv[5]-0.10825317547305482*apar[1]*b_y[3]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*b_y[1]*apar[3]*hamil[4]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[0]*hamil[4]*apar[5]*b_y[5]-0.10825317547305482*apar[1]*jacobtot_inv[3]*hamil[4]*b_y[5]-0.21650635094610965*jacobtot_inv[1]*apar[3]*hamil[4]*b_y[5]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*hamil[4]*apar[5]-0.21650635094610965*jacobtot_inv[1]*b_y[3]*hamil[4]*apar[5]-0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[4]-0.21650635094610965*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.19485571585149863*b_z[3]*hamil[4]*jacobtot_inv[5]*apar[7]+0.19485571585149863*jacobtot_inv[3]*hamil[4]*b_z[5]*apar[7]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*hamil[4]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[4]*apar[7]+0.19485571585149863*hamil[4]*b_z[5]*jacobtot_inv[5]*apar[6]+0.19485571585149863*b_z[3]*jacobtot_inv[3]*hamil[4]*apar[6]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*hamil[4]*apar[6]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[4]*apar[6]+0.10825317547305482*b_z[0]*apar[4]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*b_z[1]*apar[2]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*jacobtot_inv[0]*apar[4]*hamil[4]*b_z[5]+0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[4]*b_z[5]+0.10825317547305482*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[4]+0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[4]*hamil[4]+0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[3]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphax[4] = (((-(0.4841229182759271*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[32])-0.4841229182759271*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[32]-0.4841229182759271*jacobtot_inv[3]*apar[5]*b_y[5]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[1]*b_y[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[1]*apar[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[32]-0.4841229182759271*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[32]-0.24206145913796356*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.24206145913796356*b_z[0]*jacobtot_inv[5]*apar[7]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[5]*apar[7]*hamil[32]+0.24206145913796356*b_z[1]*jacobtot_inv[3]*apar[7]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_z[3]*apar[7]*hamil[32]+0.24206145913796356*b_z[1]*jacobtot_inv[5]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_z[5]*apar[6]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[3]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[3]*apar[6]*hamil[32]+0.24206145913796356*apar[2]*b_z[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_z[3]*apar[4]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*jacobtot_inv[3]*apar[4]*b_z[5]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[1]*apar[4]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[32]+0.24206145913796356*apar[2]*b_z[3]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[0]*apar[2]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphax[6] = ((-(0.38971143170299727*hamil[4]*b_y[5]*jacobtot_inv[5]*apar[7])-0.21650635094610965*b_y[3]*jacobtot_inv[3]*hamil[4]*apar[7]-0.19485571585149863*b_y[1]*jacobtot_inv[1]*hamil[4]*apar[7]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[4]*apar[7]-0.21650635094610965*b_y[3]*hamil[4]*jacobtot_inv[5]*apar[6]-0.21650635094610965*jacobtot_inv[3]*hamil[4]*b_y[5]*apar[6]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[4]*apar[6]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[4]*apar[6]-0.19485571585149863*jacobtot_inv[1]*apar[4]*hamil[4]*b_y[5]-0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[4]*b_y[5]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[4]*hamil[4]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[4])*rdx2*rdz2)/(vmap[1]*m_); + alphax[7] = (((-(0.19485571585149863*apar[1]*hamil[4]*b_y[5]*jacobtot_inv[5])-0.19485571585149863*b_y[1]*hamil[4]*apar[5]*jacobtot_inv[5]-0.10825317547305482*apar[0]*b_y[3]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*b_y[0]*apar[3]*hamil[4]*jacobtot_inv[5]-0.38971143170299727*jacobtot_inv[1]*hamil[4]*apar[5]*b_y[5]-0.10825317547305482*apar[0]*jacobtot_inv[3]*hamil[4]*b_y[5]-0.21650635094610965*jacobtot_inv[0]*apar[3]*hamil[4]*b_y[5]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*hamil[4]*apar[5]-0.21650635094610965*jacobtot_inv[0]*b_y[3]*hamil[4]*apar[5]-0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[4]-0.21650635094610965*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.35074028853269745*hamil[4]*b_z[5]*jacobtot_inv[5]*apar[7]+0.19485571585149863*b_z[3]*jacobtot_inv[3]*hamil[4]*apar[7]+0.19485571585149863*b_z[1]*jacobtot_inv[1]*hamil[4]*apar[7]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[4]*apar[7]+0.19485571585149863*b_z[3]*hamil[4]*jacobtot_inv[5]*apar[6]+0.19485571585149863*jacobtot_inv[3]*hamil[4]*b_z[5]*apar[6]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*hamil[4]*apar[6]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[4]*apar[6]+0.19485571585149863*b_z[1]*apar[4]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*b_z[0]*apar[2]*hamil[4]*jacobtot_inv[5]+0.19485571585149863*jacobtot_inv[1]*apar[4]*hamil[4]*b_z[5]+0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[4]*b_z[5]+0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[4]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[4]*hamil[4]+0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[3]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphax[8] = ((-(0.10825317547305482*b_y[0]*hamil[4]*jacobtot_inv[5]*apar[7])-0.21650635094610965*jacobtot_inv[0]*hamil[4]*b_y[5]*apar[7]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*hamil[4]*apar[7]-0.21650635094610965*jacobtot_inv[1]*b_y[3]*hamil[4]*apar[7]-0.10825317547305482*b_y[1]*hamil[4]*jacobtot_inv[5]*apar[6]-0.21650635094610965*jacobtot_inv[1]*hamil[4]*b_y[5]*apar[6]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*hamil[4]*apar[6]-0.21650635094610965*jacobtot_inv[0]*b_y[3]*hamil[4]*apar[6]-0.10825317547305482*apar[2]*hamil[4]*b_y[5]*jacobtot_inv[5]-0.10825317547305482*b_y[3]*apar[4]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*jacobtot_inv[3]*apar[4]*hamil[4]*b_y[5]-0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[4])*rdx2*rdz2)/(vmap[1]*m_); + alphax[9] = (((-(0.8714212528966685*apar[5]*b_y[5]*jacobtot_inv[5]*hamil[32])-0.4841229182759271*apar[3]*b_y[3]*jacobtot_inv[5]*hamil[32]-0.4841229182759271*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[32]-0.43571062644833425*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[0]*b_y[5]*hamil[32]-0.4841229182759271*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[32]-0.43571062644833425*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[0]*apar[5]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.43571062644833425*b_z[1]*jacobtot_inv[5]*apar[7]*hamil[32]+0.43571062644833425*jacobtot_inv[1]*b_z[5]*apar[7]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[3]*apar[7]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[3]*apar[7]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[5]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[5]*apar[6]*hamil[32]+0.24206145913796356*b_z[1]*jacobtot_inv[3]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_z[3]*apar[6]*hamil[32]+0.43571062644833425*apar[4]*b_z[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[2]*b_z[3]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[2]*jacobtot_inv[3]*b_z[5]*hamil[32]+0.24206145913796356*b_z[3]*jacobtot_inv[3]*apar[4]*hamil[32]+0.43571062644833425*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[0]*apar[4]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[1]*apar[2]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphax[10] = ((-(0.4841229182759271*b_y[3]*jacobtot_inv[5]*apar[7]*hamil[32])-0.4841229182759271*jacobtot_inv[3]*b_y[5]*apar[7]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[1]*apar[7]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_y[1]*apar[7]*hamil[32]-0.4841229182759271*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[32]-0.4841229182759271*b_y[3]*jacobtot_inv[3]*apar[6]*hamil[32]-0.24206145913796356*b_y[1]*jacobtot_inv[1]*apar[6]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[0]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*apar[2]*b_y[5]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_y[3]*apar[4]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[32])*rdx2*rdz2)/(vmap[1]*m_); + alphax[11] = (((-(0.24206145913796356*apar[0]*b_y[5]*jacobtot_inv[5]*hamil[32])-0.24206145913796356*b_y[0]*apar[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[1]*b_y[3]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_y[1]*apar[3]*jacobtot_inv[5]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*apar[5]*b_y[5]*hamil[32]-0.24206145913796356*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[32]-0.4841229182759271*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[32]-0.24206145913796356*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[32]-0.4841229182759271*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[32]-0.24206145913796356*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.43571062644833425*b_z[3]*jacobtot_inv[5]*apar[7]*hamil[32]+0.43571062644833425*jacobtot_inv[3]*b_z[5]*apar[7]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[1]*apar[7]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[1]*apar[7]*hamil[32]+0.43571062644833425*b_z[5]*jacobtot_inv[5]*apar[6]*hamil[32]+0.43571062644833425*b_z[3]*jacobtot_inv[3]*apar[6]*hamil[32]+0.24206145913796356*b_z[1]*jacobtot_inv[1]*apar[6]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[0]*apar[6]*hamil[32]+0.24206145913796356*b_z[0]*apar[4]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_z[1]*apar[2]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[4]*b_z[5]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*apar[2]*b_z[5]*hamil[32]+0.24206145913796356*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_z[3]*apar[4]*hamil[32]+0.24206145913796356*b_z[0]*apar[2]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[2]*b_z[3]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphax[16] = ((-(0.19485571585149863*b_y[1]*hamil[4]*jacobtot_inv[5]*apar[7])-0.38971143170299727*jacobtot_inv[1]*hamil[4]*b_y[5]*apar[7]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*hamil[4]*apar[7]-0.21650635094610965*jacobtot_inv[0]*b_y[3]*hamil[4]*apar[7]-0.10825317547305482*b_y[0]*hamil[4]*jacobtot_inv[5]*apar[6]-0.21650635094610965*jacobtot_inv[0]*hamil[4]*b_y[5]*apar[6]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*hamil[4]*apar[6]-0.21650635094610965*jacobtot_inv[1]*b_y[3]*hamil[4]*apar[6]-0.19485571585149863*apar[4]*hamil[4]*b_y[5]*jacobtot_inv[5]-0.10825317547305482*apar[2]*b_y[3]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*apar[2]*jacobtot_inv[3]*hamil[4]*b_y[5]-0.10825317547305482*b_y[3]*jacobtot_inv[3]*apar[4]*hamil[4])*rdx2*rdz2)/(vmap[1]*m_); + alphax[17] = ((-(0.8714212528966685*b_y[5]*jacobtot_inv[5]*apar[7]*hamil[32])-0.4841229182759271*b_y[3]*jacobtot_inv[3]*apar[7]*hamil[32]-0.43571062644833425*b_y[1]*jacobtot_inv[1]*apar[7]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[0]*apar[7]*hamil[32]-0.4841229182759271*b_y[3]*jacobtot_inv[5]*apar[6]*hamil[32]-0.4841229182759271*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[1]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_y[1]*apar[6]*hamil[32]-0.43571062644833425*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[2]*b_y[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_y[3]*apar[4]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[32])*rdx2*rdz2)/(vmap[1]*m_); + alphax[18] = (((-(0.43571062644833425*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[32])-0.43571062644833425*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[0]*b_y[3]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_y[0]*apar[3]*jacobtot_inv[5]*hamil[32]-0.8714212528966685*jacobtot_inv[1]*apar[5]*b_y[5]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[3]*b_y[5]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[3]*apar[5]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[32]-0.24206145913796356*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[32]-0.4841229182759271*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.7842791276070014*b_z[5]*jacobtot_inv[5]*apar[7]*hamil[32]+0.43571062644833425*b_z[3]*jacobtot_inv[3]*apar[7]*hamil[32]+0.43571062644833425*b_z[1]*jacobtot_inv[1]*apar[7]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[0]*apar[7]*hamil[32]+0.43571062644833425*b_z[3]*jacobtot_inv[5]*apar[6]*hamil[32]+0.43571062644833425*jacobtot_inv[3]*b_z[5]*apar[6]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[1]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[1]*apar[6]*hamil[32]+0.43571062644833425*b_z[1]*apar[4]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_z[0]*apar[2]*jacobtot_inv[5]*hamil[32]+0.43571062644833425*jacobtot_inv[1]*apar[4]*b_z[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[2]*b_z[5]*hamil[32]+0.24206145913796356*b_z[0]*jacobtot_inv[3]*apar[4]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_z[3]*apar[4]*hamil[32]+0.24206145913796356*b_z[1]*apar[2]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*apar[2]*b_z[3]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphax[19] = ((-(0.24206145913796356*b_y[0]*jacobtot_inv[5]*apar[7]*hamil[32])-0.4841229182759271*jacobtot_inv[0]*b_y[5]*apar[7]*hamil[32]-0.24206145913796356*b_y[1]*jacobtot_inv[3]*apar[7]*hamil[32]-0.4841229182759271*jacobtot_inv[1]*b_y[3]*apar[7]*hamil[32]-0.24206145913796356*b_y[1]*jacobtot_inv[5]*apar[6]*hamil[32]-0.4841229182759271*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[3]*apar[6]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*b_y[3]*apar[6]*hamil[32]-0.24206145913796356*apar[2]*b_y[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_y[3]*apar[4]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[32]-0.24206145913796356*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[32])*rdx2*rdz2)/(vmap[1]*m_); + alphax[26] = ((-(0.43571062644833425*b_y[1]*jacobtot_inv[5]*apar[7]*hamil[32])-0.8714212528966685*jacobtot_inv[1]*b_y[5]*apar[7]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[3]*apar[7]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*b_y[3]*apar[7]*hamil[32]-0.24206145913796356*b_y[0]*jacobtot_inv[5]*apar[6]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[32]-0.24206145913796356*b_y[1]*jacobtot_inv[3]*apar[6]*hamil[32]-0.4841229182759271*jacobtot_inv[1]*b_y[3]*apar[6]*hamil[32]-0.43571062644833425*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[2]*b_y[3]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[2]*jacobtot_inv[3]*b_y[5]*hamil[32]-0.24206145913796356*b_y[3]*jacobtot_inv[3]*apar[4]*hamil[32])*rdx2*rdz2)/(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.21650635094610965*apar[3]*hamil[4]*b_x[5]*jacobtot_inv[5]+0.21650635094610965*b_x[3]*hamil[4]*apar[5]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[3]*hamil[4]*apar[5]*b_x[5]+0.10825317547305482*apar[0]*jacobtot_inv[1]*hamil[4]*b_x[5]+0.10825317547305482*jacobtot_inv[0]*apar[1]*hamil[4]*b_x[5]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[4]*apar[5]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[4]*apar[5]+0.21650635094610965*apar[3]*b_x[3]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*apar[1]*jacobtot_inv[1]*b_x[3]*hamil[4]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_x[3]*hamil[4]+0.10825317547305482*b_x[1]*jacobtot_inv[1]*apar[3]*hamil[4]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.21650635094610965*apar[1]*hamil[4]*b_z[5]*jacobtot_inv[5])-0.21650635094610965*b_z[1]*hamil[4]*apar[5]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[1]*hamil[4]*apar[5]*b_z[5]-0.10825317547305482*apar[0]*jacobtot_inv[3]*hamil[4]*b_z[5]-0.10825317547305482*jacobtot_inv[0]*apar[3]*hamil[4]*b_z[5]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*hamil[4]*apar[5]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*hamil[4]*apar[5]-0.10825317547305482*apar[1]*b_z[3]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*b_z[1]*apar[3]*jacobtot_inv[3]*hamil[4]-0.21650635094610965*apar[1]*b_z[1]*jacobtot_inv[1]*hamil[4]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_z[1]*hamil[4]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[1]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphay[1] = (((0.38971143170299727*hamil[4]*apar[5]*b_x[5]*jacobtot_inv[5]+0.21650635094610965*apar[3]*b_x[3]*hamil[4]*jacobtot_inv[5]+0.21650635094610965*apar[3]*jacobtot_inv[3]*hamil[4]*b_x[5]+0.19485571585149863*apar[1]*jacobtot_inv[1]*hamil[4]*b_x[5]+0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[4]*b_x[5]+0.21650635094610965*b_x[3]*jacobtot_inv[3]*hamil[4]*apar[5]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*hamil[4]*apar[5]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[4]*apar[5]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_x[3]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_x[3]*hamil[4]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[3]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.10825317547305482*apar[0]*hamil[4]*b_z[5]*jacobtot_inv[5])-0.10825317547305482*b_z[0]*hamil[4]*apar[5]*jacobtot_inv[5]-0.10825317547305482*apar[1]*b_z[3]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*b_z[1]*apar[3]*hamil[4]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[0]*hamil[4]*apar[5]*b_z[5]-0.21650635094610965*apar[1]*jacobtot_inv[3]*hamil[4]*b_z[5]-0.10825317547305482*jacobtot_inv[1]*apar[3]*hamil[4]*b_z[5]-0.21650635094610965*b_z[1]*jacobtot_inv[3]*hamil[4]*apar[5]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*hamil[4]*apar[5]-0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[1]*hamil[4]-0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[1]*hamil[4]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_z[1]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphay[2] = (((0.21650635094610965*b_x[3]*hamil[4]*jacobtot_inv[5]*apar[7]+0.21650635094610965*jacobtot_inv[3]*hamil[4]*b_x[5]*apar[7]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[4]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[4]*apar[7]+0.21650635094610965*hamil[4]*b_x[5]*jacobtot_inv[5]*apar[6]+0.21650635094610965*b_x[3]*jacobtot_inv[3]*hamil[4]*apar[6]+0.10825317547305482*b_x[1]*jacobtot_inv[1]*hamil[4]*apar[6]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[4]*apar[6]+0.10825317547305482*jacobtot_inv[0]*apar[4]*hamil[4]*b_x[5]+0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[4]*b_x[5]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[4]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.21650635094610965*b_z[1]*hamil[4]*jacobtot_inv[5]*apar[7])-0.21650635094610965*jacobtot_inv[1]*hamil[4]*b_z[5]*apar[7]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*hamil[4]*apar[7]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*hamil[4]*apar[7]-0.10825317547305482*jacobtot_inv[0]*hamil[4]*b_z[5]*apar[6]-0.10825317547305482*b_z[1]*jacobtot_inv[3]*hamil[4]*apar[6]-0.21650635094610965*apar[4]*hamil[4]*b_z[5]*jacobtot_inv[5]-0.10825317547305482*apar[2]*jacobtot_inv[3]*hamil[4]*b_z[5]-0.10825317547305482*b_z[3]*jacobtot_inv[3]*apar[4]*hamil[4]-0.21650635094610965*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[4]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[4]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphay[3] = (((0.10825317547305482*apar[0]*hamil[4]*b_x[5]*jacobtot_inv[5]+0.10825317547305482*b_x[0]*hamil[4]*apar[5]*jacobtot_inv[5]+0.10825317547305482*apar[1]*b_x[3]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*b_x[1]*apar[3]*hamil[4]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[0]*hamil[4]*apar[5]*b_x[5]+0.10825317547305482*apar[1]*jacobtot_inv[3]*hamil[4]*b_x[5]+0.21650635094610965*jacobtot_inv[1]*apar[3]*hamil[4]*b_x[5]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*hamil[4]*apar[5]+0.21650635094610965*jacobtot_inv[1]*b_x[3]*hamil[4]*apar[5]+0.10825317547305482*apar[0]*b_x[3]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*b_x[0]*apar[3]*jacobtot_inv[3]*hamil[4]+0.21650635094610965*jacobtot_inv[0]*apar[3]*b_x[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.38971143170299727*hamil[4]*apar[5]*b_z[5]*jacobtot_inv[5])-0.21650635094610965*apar[1]*b_z[1]*hamil[4]*jacobtot_inv[5]-0.19485571585149863*apar[3]*jacobtot_inv[3]*hamil[4]*b_z[5]-0.21650635094610965*apar[1]*jacobtot_inv[1]*hamil[4]*b_z[5]-0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[4]*b_z[5]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*hamil[4]*apar[5]-0.21650635094610965*b_z[1]*jacobtot_inv[1]*hamil[4]*apar[5]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[4]*apar[5]-0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_z[3]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[3]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphay[4] = (((0.4841229182759271*apar[3]*b_x[5]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*b_x[3]*apar[5]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*jacobtot_inv[3]*apar[5]*b_x[5]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[1]*b_x[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[1]*b_x[5]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[1]*apar[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_x[1]*apar[5]*hamil[32]+0.4841229182759271*apar[3]*b_x[3]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*apar[1]*jacobtot_inv[1]*b_x[3]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[0]*b_x[3]*hamil[32]+0.24206145913796356*b_x[1]*jacobtot_inv[1]*apar[3]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[0]*apar[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.4841229182759271*apar[1]*b_z[5]*jacobtot_inv[5]*hamil[32])-0.4841229182759271*b_z[1]*apar[5]*jacobtot_inv[5]*hamil[32]-0.4841229182759271*jacobtot_inv[1]*apar[5]*b_z[5]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[3]*b_z[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[3]*b_z[5]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[3]*apar[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_z[3]*apar[5]*hamil[32]-0.24206145913796356*apar[1]*b_z[3]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*b_z[1]*apar[3]*jacobtot_inv[3]*hamil[32]-0.4841229182759271*apar[1]*b_z[1]*jacobtot_inv[1]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[0]*b_z[1]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[0]*apar[1]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphay[6] = (((0.38971143170299727*hamil[4]*b_x[5]*jacobtot_inv[5]*apar[7]+0.21650635094610965*b_x[3]*jacobtot_inv[3]*hamil[4]*apar[7]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*hamil[4]*apar[7]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[4]*apar[7]+0.21650635094610965*b_x[3]*hamil[4]*jacobtot_inv[5]*apar[6]+0.21650635094610965*jacobtot_inv[3]*hamil[4]*b_x[5]*apar[6]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[4]*apar[6]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[4]*apar[6]+0.19485571585149863*jacobtot_inv[1]*apar[4]*hamil[4]*b_x[5]+0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[4]*b_x[5]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[4]*hamil[4]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.10825317547305482*b_z[0]*hamil[4]*jacobtot_inv[5]*apar[7])-0.21650635094610965*jacobtot_inv[0]*hamil[4]*b_z[5]*apar[7]-0.21650635094610965*b_z[1]*jacobtot_inv[3]*hamil[4]*apar[7]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*hamil[4]*apar[7]-0.10825317547305482*b_z[1]*hamil[4]*jacobtot_inv[5]*apar[6]-0.10825317547305482*jacobtot_inv[1]*hamil[4]*b_z[5]*apar[6]-0.10825317547305482*apar[2]*hamil[4]*b_z[5]*jacobtot_inv[5]-0.10825317547305482*b_z[3]*apar[4]*hamil[4]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[3]*apar[4]*hamil[4]*b_z[5]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[4]*hamil[4]-0.21650635094610965*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[4]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphay[7] = (((0.19485571585149863*apar[1]*hamil[4]*b_x[5]*jacobtot_inv[5]+0.19485571585149863*b_x[1]*hamil[4]*apar[5]*jacobtot_inv[5]+0.10825317547305482*apar[0]*b_x[3]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*b_x[0]*apar[3]*hamil[4]*jacobtot_inv[5]+0.38971143170299727*jacobtot_inv[1]*hamil[4]*apar[5]*b_x[5]+0.10825317547305482*apar[0]*jacobtot_inv[3]*hamil[4]*b_x[5]+0.21650635094610965*jacobtot_inv[0]*apar[3]*hamil[4]*b_x[5]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*hamil[4]*apar[5]+0.21650635094610965*jacobtot_inv[0]*b_x[3]*hamil[4]*apar[5]+0.10825317547305482*apar[1]*b_x[3]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*b_x[1]*apar[3]*jacobtot_inv[3]*hamil[4]+0.21650635094610965*jacobtot_inv[1]*apar[3]*b_x[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.19485571585149863*apar[3]*hamil[4]*b_z[5]*jacobtot_inv[5])-0.19485571585149863*b_z[3]*hamil[4]*apar[5]*jacobtot_inv[5]-0.10825317547305482*apar[0]*b_z[1]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*b_z[0]*apar[1]*hamil[4]*jacobtot_inv[5]-0.38971143170299727*jacobtot_inv[3]*hamil[4]*apar[5]*b_z[5]-0.10825317547305482*apar[0]*jacobtot_inv[1]*hamil[4]*b_z[5]-0.21650635094610965*jacobtot_inv[0]*apar[1]*hamil[4]*b_z[5]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*hamil[4]*apar[5]-0.21650635094610965*jacobtot_inv[0]*b_z[1]*hamil[4]*apar[5]-0.21650635094610965*apar[1]*b_z[1]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*apar[1]*jacobtot_inv[1]*b_z[3]*hamil[4]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[3]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphay[8] = (((0.10825317547305482*b_x[0]*hamil[4]*jacobtot_inv[5]*apar[7]+0.21650635094610965*jacobtot_inv[0]*hamil[4]*b_x[5]*apar[7]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*hamil[4]*apar[7]+0.21650635094610965*jacobtot_inv[1]*b_x[3]*hamil[4]*apar[7]+0.10825317547305482*b_x[1]*hamil[4]*jacobtot_inv[5]*apar[6]+0.21650635094610965*jacobtot_inv[1]*hamil[4]*b_x[5]*apar[6]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*hamil[4]*apar[6]+0.21650635094610965*jacobtot_inv[0]*b_x[3]*hamil[4]*apar[6]+0.10825317547305482*apar[2]*hamil[4]*b_x[5]*jacobtot_inv[5]+0.10825317547305482*b_x[3]*apar[4]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*jacobtot_inv[3]*apar[4]*hamil[4]*b_x[5]+0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.38971143170299727*hamil[4]*b_z[5]*jacobtot_inv[5]*apar[7])-0.19485571585149863*b_z[3]*jacobtot_inv[3]*hamil[4]*apar[7]-0.21650635094610965*b_z[1]*jacobtot_inv[1]*hamil[4]*apar[7]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[4]*apar[7]-0.19485571585149863*jacobtot_inv[3]*hamil[4]*b_z[5]*apar[6]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[4]*apar[6]-0.21650635094610965*b_z[1]*apar[4]*hamil[4]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[1]*apar[4]*hamil[4]*b_z[5]-0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[4]*b_z[5]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[4]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[4]*hamil[4]-0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[3]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphay[9] = (((0.8714212528966685*apar[5]*b_x[5]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*apar[3]*b_x[3]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*apar[3]*jacobtot_inv[3]*b_x[5]*hamil[32]+0.43571062644833425*apar[1]*jacobtot_inv[1]*b_x[5]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[0]*b_x[5]*hamil[32]+0.4841229182759271*b_x[3]*jacobtot_inv[3]*apar[5]*hamil[32]+0.43571062644833425*b_x[1]*jacobtot_inv[1]*apar[5]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[0]*apar[5]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[1]*b_x[3]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[1]*b_x[3]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[1]*apar[3]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_x[1]*apar[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.24206145913796356*apar[0]*b_z[5]*jacobtot_inv[5]*hamil[32])-0.24206145913796356*b_z[0]*apar[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[1]*b_z[3]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_z[1]*apar[3]*jacobtot_inv[5]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*apar[5]*b_z[5]*hamil[32]-0.4841229182759271*apar[1]*jacobtot_inv[3]*b_z[5]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*apar[3]*b_z[5]*hamil[32]-0.4841229182759271*b_z[1]*jacobtot_inv[3]*apar[5]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_z[3]*apar[5]*hamil[32]-0.24206145913796356*apar[0]*b_z[1]*jacobtot_inv[1]*hamil[32]-0.24206145913796356*b_z[0]*apar[1]*jacobtot_inv[1]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*apar[1]*b_z[1]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphay[10] = (((0.4841229182759271*b_x[3]*jacobtot_inv[5]*apar[7]*hamil[32]+0.4841229182759271*jacobtot_inv[3]*b_x[5]*apar[7]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[1]*apar[7]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_x[1]*apar[7]*hamil[32]+0.4841229182759271*b_x[5]*jacobtot_inv[5]*apar[6]*hamil[32]+0.4841229182759271*b_x[3]*jacobtot_inv[3]*apar[6]*hamil[32]+0.24206145913796356*b_x[1]*jacobtot_inv[1]*apar[6]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[0]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[4]*b_x[5]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*apar[2]*b_x[5]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_x[3]*apar[4]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.4841229182759271*b_z[1]*jacobtot_inv[5]*apar[7]*hamil[32])-0.4841229182759271*jacobtot_inv[1]*b_z[5]*apar[7]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[3]*apar[7]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_z[3]*apar[7]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_z[5]*apar[6]*hamil[32]-0.24206145913796356*b_z[1]*jacobtot_inv[3]*apar[6]*hamil[32]-0.4841229182759271*apar[4]*b_z[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[2]*jacobtot_inv[3]*b_z[5]*hamil[32]-0.24206145913796356*b_z[3]*jacobtot_inv[3]*apar[4]*hamil[32]-0.4841229182759271*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[0]*apar[4]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphay[11] = (((0.24206145913796356*apar[0]*b_x[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_x[0]*apar[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[1]*b_x[3]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_x[1]*apar[3]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*apar[5]*b_x[5]*hamil[32]+0.24206145913796356*apar[1]*jacobtot_inv[3]*b_x[5]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*apar[3]*b_x[5]*hamil[32]+0.24206145913796356*b_x[1]*jacobtot_inv[3]*apar[5]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*b_x[3]*apar[5]*hamil[32]+0.24206145913796356*apar[0]*b_x[3]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*b_x[0]*apar[3]*jacobtot_inv[3]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*apar[3]*b_x[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.8714212528966685*apar[5]*b_z[5]*jacobtot_inv[5]*hamil[32])-0.4841229182759271*apar[1]*b_z[1]*jacobtot_inv[5]*hamil[32]-0.43571062644833425*apar[3]*jacobtot_inv[3]*b_z[5]*hamil[32]-0.4841229182759271*apar[1]*jacobtot_inv[1]*b_z[5]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[0]*b_z[5]*hamil[32]-0.43571062644833425*b_z[3]*jacobtot_inv[3]*apar[5]*hamil[32]-0.4841229182759271*b_z[1]*jacobtot_inv[1]*apar[5]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[0]*apar[5]*hamil[32]-0.24206145913796356*apar[0]*b_z[1]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*b_z[0]*apar[1]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[1]*b_z[3]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_z[1]*apar[3]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphay[16] = (((0.19485571585149863*b_x[1]*hamil[4]*jacobtot_inv[5]*apar[7]+0.38971143170299727*jacobtot_inv[1]*hamil[4]*b_x[5]*apar[7]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*hamil[4]*apar[7]+0.21650635094610965*jacobtot_inv[0]*b_x[3]*hamil[4]*apar[7]+0.10825317547305482*b_x[0]*hamil[4]*jacobtot_inv[5]*apar[6]+0.21650635094610965*jacobtot_inv[0]*hamil[4]*b_x[5]*apar[6]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*hamil[4]*apar[6]+0.21650635094610965*jacobtot_inv[1]*b_x[3]*hamil[4]*apar[6]+0.19485571585149863*apar[4]*hamil[4]*b_x[5]*jacobtot_inv[5]+0.10825317547305482*apar[2]*b_x[3]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*apar[2]*jacobtot_inv[3]*hamil[4]*b_x[5]+0.10825317547305482*b_x[3]*jacobtot_inv[3]*apar[4]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.19485571585149863*b_z[3]*hamil[4]*jacobtot_inv[5]*apar[7])-0.38971143170299727*jacobtot_inv[3]*hamil[4]*b_z[5]*apar[7]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*hamil[4]*apar[7]-0.21650635094610965*jacobtot_inv[0]*b_z[1]*hamil[4]*apar[7]-0.19485571585149863*hamil[4]*b_z[5]*jacobtot_inv[5]*apar[6]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*hamil[4]*apar[6]-0.10825317547305482*b_z[0]*apar[4]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*b_z[1]*apar[2]*hamil[4]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[0]*apar[4]*hamil[4]*b_z[5]-0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[4]*b_z[5]-0.21650635094610965*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[4]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[4]*hamil[4])*rdx2*rdy2)/vmap[1])/m_; + alphay[17] = (((0.8714212528966685*b_x[5]*jacobtot_inv[5]*apar[7]*hamil[32]+0.4841229182759271*b_x[3]*jacobtot_inv[3]*apar[7]*hamil[32]+0.43571062644833425*b_x[1]*jacobtot_inv[1]*apar[7]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[0]*apar[7]*hamil[32]+0.4841229182759271*b_x[3]*jacobtot_inv[5]*apar[6]*hamil[32]+0.4841229182759271*jacobtot_inv[3]*b_x[5]*apar[6]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[1]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_x[1]*apar[6]*hamil[32]+0.43571062644833425*jacobtot_inv[1]*apar[4]*b_x[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[2]*b_x[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_x[3]*apar[4]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.24206145913796356*b_z[0]*jacobtot_inv[5]*apar[7]*hamil[32])-0.4841229182759271*jacobtot_inv[0]*b_z[5]*apar[7]*hamil[32]-0.4841229182759271*b_z[1]*jacobtot_inv[3]*apar[7]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_z[3]*apar[7]*hamil[32]-0.24206145913796356*b_z[1]*jacobtot_inv[5]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_z[5]*apar[6]*hamil[32]-0.24206145913796356*apar[2]*b_z[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_z[3]*apar[4]*jacobtot_inv[5]*hamil[32]-0.4841229182759271*jacobtot_inv[3]*apar[4]*b_z[5]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[1]*apar[4]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[32]-0.24206145913796356*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphay[18] = (((0.43571062644833425*apar[1]*b_x[5]*jacobtot_inv[5]*hamil[32]+0.43571062644833425*b_x[1]*apar[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[0]*b_x[3]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_x[0]*apar[3]*jacobtot_inv[5]*hamil[32]+0.8714212528966685*jacobtot_inv[1]*apar[5]*b_x[5]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[3]*b_x[5]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*apar[3]*b_x[5]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[3]*apar[5]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_x[3]*apar[5]*hamil[32]+0.24206145913796356*apar[1]*b_x[3]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*b_x[1]*apar[3]*jacobtot_inv[3]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*apar[3]*b_x[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.43571062644833425*apar[3]*b_z[5]*jacobtot_inv[5]*hamil[32])-0.43571062644833425*b_z[3]*apar[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[0]*b_z[1]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_z[0]*apar[1]*jacobtot_inv[5]*hamil[32]-0.8714212528966685*jacobtot_inv[3]*apar[5]*b_z[5]*hamil[32]-0.24206145913796356*apar[0]*jacobtot_inv[1]*b_z[5]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*apar[1]*b_z[5]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[1]*apar[5]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*b_z[1]*apar[5]*hamil[32]-0.4841229182759271*apar[1]*b_z[1]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*apar[1]*jacobtot_inv[1]*b_z[3]*hamil[32]-0.24206145913796356*b_z[1]*jacobtot_inv[1]*apar[3]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphay[19] = (((0.24206145913796356*b_x[0]*jacobtot_inv[5]*apar[7]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_x[5]*apar[7]*hamil[32]+0.24206145913796356*b_x[1]*jacobtot_inv[3]*apar[7]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*b_x[3]*apar[7]*hamil[32]+0.24206145913796356*b_x[1]*jacobtot_inv[5]*apar[6]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*b_x[5]*apar[6]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[3]*apar[6]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_x[3]*apar[6]*hamil[32]+0.24206145913796356*apar[2]*b_x[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_x[3]*apar[4]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*jacobtot_inv[3]*apar[4]*b_x[5]*hamil[32]+0.24206145913796356*apar[2]*b_x[3]*jacobtot_inv[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.8714212528966685*b_z[5]*jacobtot_inv[5]*apar[7]*hamil[32])-0.43571062644833425*b_z[3]*jacobtot_inv[3]*apar[7]*hamil[32]-0.4841229182759271*b_z[1]*jacobtot_inv[1]*apar[7]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[0]*apar[7]*hamil[32]-0.43571062644833425*jacobtot_inv[3]*b_z[5]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_z[1]*apar[6]*hamil[32]-0.4841229182759271*b_z[1]*apar[4]*jacobtot_inv[5]*hamil[32]-0.4841229182759271*jacobtot_inv[1]*apar[4]*b_z[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[2]*b_z[5]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[3]*apar[4]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_z[3]*apar[4]*hamil[32]-0.24206145913796356*b_z[1]*apar[2]*jacobtot_inv[3]*hamil[32])*rdx2*rdy2)/vmap[1])/m_; + alphay[26] = (((0.43571062644833425*b_x[1]*jacobtot_inv[5]*apar[7]*hamil[32]+0.8714212528966685*jacobtot_inv[1]*b_x[5]*apar[7]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[3]*apar[7]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_x[3]*apar[7]*hamil[32]+0.24206145913796356*b_x[0]*jacobtot_inv[5]*apar[6]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_x[5]*apar[6]*hamil[32]+0.24206145913796356*b_x[1]*jacobtot_inv[3]*apar[6]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*b_x[3]*apar[6]*hamil[32]+0.43571062644833425*apar[4]*b_x[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[2]*b_x[3]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[2]*jacobtot_inv[3]*b_x[5]*hamil[32]+0.24206145913796356*b_x[3]*jacobtot_inv[3]*apar[4]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.43571062644833425*b_z[3]*jacobtot_inv[5]*apar[7]*hamil[32])-0.8714212528966685*jacobtot_inv[3]*b_z[5]*apar[7]*hamil[32]-0.24206145913796356*b_z[0]*jacobtot_inv[1]*apar[7]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*b_z[1]*apar[7]*hamil[32]-0.43571062644833425*b_z[5]*jacobtot_inv[5]*apar[6]*hamil[32]-0.24206145913796356*b_z[1]*jacobtot_inv[1]*apar[6]*hamil[32]-0.24206145913796356*b_z[0]*apar[4]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_z[1]*apar[2]*jacobtot_inv[5]*hamil[32]-0.4841229182759271*jacobtot_inv[0]*apar[4]*b_z[5]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*apar[2]*b_z[5]*hamil[32]-0.4841229182759271*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_z[3]*apar[4]*hamil[32])*rdx2*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.10825317547305482*b_x[0]*hamil[4]*jacobtot_inv[5]*apar[7])-0.10825317547305482*jacobtot_inv[0]*hamil[4]*b_x[5]*apar[7]-0.10825317547305482*b_x[1]*jacobtot_inv[3]*hamil[4]*apar[7]-0.10825317547305482*jacobtot_inv[1]*b_x[3]*hamil[4]*apar[7]-0.10825317547305482*b_x[1]*hamil[4]*jacobtot_inv[5]*apar[6]-0.10825317547305482*jacobtot_inv[1]*hamil[4]*b_x[5]*apar[6]-0.10825317547305482*b_x[0]*jacobtot_inv[3]*hamil[4]*apar[6]-0.10825317547305482*jacobtot_inv[0]*b_x[3]*hamil[4]*apar[6]-0.10825317547305482*apar[2]*hamil[4]*b_x[5]*jacobtot_inv[5]-0.10825317547305482*b_x[3]*apar[4]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*jacobtot_inv[3]*apar[4]*hamil[4]*b_x[5]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[4]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[4]*hamil[4]-0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*b_x[1]*jacobtot_inv[1]*apar[2]*hamil[4]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[2]*hamil[4])*rdy2*rdz2)/vmap[1]+((0.21650635094610965*apar[1]*hamil[4]*b_y[5]*jacobtot_inv[5]+0.21650635094610965*b_y[1]*hamil[4]*apar[5]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[1]*hamil[4]*apar[5]*b_y[5]+0.10825317547305482*apar[0]*jacobtot_inv[3]*hamil[4]*b_y[5]+0.10825317547305482*jacobtot_inv[0]*apar[3]*hamil[4]*b_y[5]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*hamil[4]*apar[5]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*hamil[4]*apar[5]+0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[4]+0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[4]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[4]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[4])*rdx2*rdz2)/vmap[1])/m_; + alphaz[1] = (((-(0.19485571585149863*b_x[1]*hamil[4]*jacobtot_inv[5]*apar[7])-0.19485571585149863*jacobtot_inv[1]*hamil[4]*b_x[5]*apar[7]-0.10825317547305482*b_x[0]*jacobtot_inv[3]*hamil[4]*apar[7]-0.10825317547305482*jacobtot_inv[0]*b_x[3]*hamil[4]*apar[7]-0.10825317547305482*b_x[0]*hamil[4]*jacobtot_inv[5]*apar[6]-0.10825317547305482*jacobtot_inv[0]*hamil[4]*b_x[5]*apar[6]-0.10825317547305482*b_x[1]*jacobtot_inv[3]*hamil[4]*apar[6]-0.10825317547305482*jacobtot_inv[1]*b_x[3]*hamil[4]*apar[6]-0.19485571585149863*apar[4]*hamil[4]*b_x[5]*jacobtot_inv[5]-0.10825317547305482*apar[2]*b_x[3]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*apar[2]*jacobtot_inv[3]*hamil[4]*b_x[5]-0.10825317547305482*b_x[3]*jacobtot_inv[3]*apar[4]*hamil[4]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[4]*hamil[4]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[4]*hamil[4]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[2]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[2]*hamil[4])*rdy2*rdz2)/vmap[1]+((0.10825317547305482*apar[0]*hamil[4]*b_y[5]*jacobtot_inv[5]+0.10825317547305482*b_y[0]*hamil[4]*apar[5]*jacobtot_inv[5]+0.10825317547305482*apar[1]*b_y[3]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*b_y[1]*apar[3]*hamil[4]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[0]*hamil[4]*apar[5]*b_y[5]+0.21650635094610965*apar[1]*jacobtot_inv[3]*hamil[4]*b_y[5]+0.10825317547305482*jacobtot_inv[1]*apar[3]*hamil[4]*b_y[5]+0.21650635094610965*b_y[1]*jacobtot_inv[3]*hamil[4]*apar[5]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*hamil[4]*apar[5]+0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[4]+0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[4]+0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[4])*rdx2*rdz2)/vmap[1])/m_; + alphaz[2] = ((0.21650635094610965*b_y[1]*hamil[4]*jacobtot_inv[5]*apar[7]+0.21650635094610965*jacobtot_inv[1]*hamil[4]*b_y[5]*apar[7]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*hamil[4]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*hamil[4]*apar[7]+0.10825317547305482*jacobtot_inv[0]*hamil[4]*b_y[5]*apar[6]+0.10825317547305482*b_y[1]*jacobtot_inv[3]*hamil[4]*apar[6]+0.21650635094610965*apar[4]*hamil[4]*b_y[5]*jacobtot_inv[5]+0.10825317547305482*apar[2]*jacobtot_inv[3]*hamil[4]*b_y[5]+0.10825317547305482*b_y[3]*jacobtot_inv[3]*apar[4]*hamil[4]+0.21650635094610965*b_y[1]*jacobtot_inv[1]*apar[4]*hamil[4]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[4]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[4])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[3] = (((-(0.19485571585149863*b_x[3]*hamil[4]*jacobtot_inv[5]*apar[7])-0.19485571585149863*jacobtot_inv[3]*hamil[4]*b_x[5]*apar[7]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[4]*apar[7]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[4]*apar[7]-0.19485571585149863*hamil[4]*b_x[5]*jacobtot_inv[5]*apar[6]-0.19485571585149863*b_x[3]*jacobtot_inv[3]*hamil[4]*apar[6]-0.10825317547305482*b_x[1]*jacobtot_inv[1]*hamil[4]*apar[6]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[4]*apar[6]-0.10825317547305482*b_x[0]*apar[4]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*b_x[1]*apar[2]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*jacobtot_inv[0]*apar[4]*hamil[4]*b_x[5]-0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[4]*b_x[5]-0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[4]*hamil[4]-0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[4]*hamil[4]-0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((0.38971143170299727*hamil[4]*apar[5]*b_y[5]*jacobtot_inv[5]+0.21650635094610965*apar[1]*b_y[1]*hamil[4]*jacobtot_inv[5]+0.19485571585149863*apar[3]*jacobtot_inv[3]*hamil[4]*b_y[5]+0.21650635094610965*apar[1]*jacobtot_inv[1]*hamil[4]*b_y[5]+0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[4]*b_y[5]+0.19485571585149863*b_y[3]*jacobtot_inv[3]*hamil[4]*apar[5]+0.21650635094610965*b_y[1]*jacobtot_inv[1]*hamil[4]*apar[5]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[4]*apar[5]+0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[4])*rdx2*rdz2)/vmap[1])/m_; + alphaz[4] = (((-(0.24206145913796356*b_x[0]*jacobtot_inv[5]*apar[7]*hamil[32])-0.24206145913796356*jacobtot_inv[0]*b_x[5]*apar[7]*hamil[32]-0.24206145913796356*b_x[1]*jacobtot_inv[3]*apar[7]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_x[3]*apar[7]*hamil[32]-0.24206145913796356*b_x[1]*jacobtot_inv[5]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_x[5]*apar[6]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[3]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_x[3]*apar[6]*hamil[32]-0.24206145913796356*apar[2]*b_x[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_x[3]*apar[4]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*jacobtot_inv[3]*apar[4]*b_x[5]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[1]*apar[4]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_x[1]*apar[4]*hamil[32]-0.24206145913796356*apar[2]*b_x[3]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*b_x[1]*jacobtot_inv[1]*apar[2]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[0]*apar[2]*hamil[32])*rdy2*rdz2)/vmap[1]+((0.4841229182759271*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*apar[5]*b_y[5]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[3]*b_y[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[3]*apar[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[32]+0.24206145913796356*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[32]+0.4841229182759271*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[32])*rdx2*rdz2)/vmap[1])/m_; + alphaz[6] = ((0.10825317547305482*b_y[0]*hamil[4]*jacobtot_inv[5]*apar[7]+0.21650635094610965*jacobtot_inv[0]*hamil[4]*b_y[5]*apar[7]+0.21650635094610965*b_y[1]*jacobtot_inv[3]*hamil[4]*apar[7]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*hamil[4]*apar[7]+0.10825317547305482*b_y[1]*hamil[4]*jacobtot_inv[5]*apar[6]+0.10825317547305482*jacobtot_inv[1]*hamil[4]*b_y[5]*apar[6]+0.10825317547305482*apar[2]*hamil[4]*b_y[5]*jacobtot_inv[5]+0.10825317547305482*b_y[3]*apar[4]*hamil[4]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[3]*apar[4]*hamil[4]*b_y[5]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[4]*hamil[4]+0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[4]*hamil[4]+0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[4])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[7] = (((-(0.35074028853269745*hamil[4]*b_x[5]*jacobtot_inv[5]*apar[7])-0.19485571585149863*b_x[3]*jacobtot_inv[3]*hamil[4]*apar[7]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*hamil[4]*apar[7]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[4]*apar[7]-0.19485571585149863*b_x[3]*hamil[4]*jacobtot_inv[5]*apar[6]-0.19485571585149863*jacobtot_inv[3]*hamil[4]*b_x[5]*apar[6]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[4]*apar[6]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[4]*apar[6]-0.19485571585149863*b_x[1]*apar[4]*hamil[4]*jacobtot_inv[5]-0.10825317547305482*b_x[0]*apar[2]*hamil[4]*jacobtot_inv[5]-0.19485571585149863*jacobtot_inv[1]*apar[4]*hamil[4]*b_x[5]-0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[4]*b_x[5]-0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[4]*hamil[4]-0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[4]*hamil[4]-0.10825317547305482*b_x[1]*apar[2]*jacobtot_inv[3]*hamil[4]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((0.19485571585149863*apar[3]*hamil[4]*b_y[5]*jacobtot_inv[5]+0.19485571585149863*b_y[3]*hamil[4]*apar[5]*jacobtot_inv[5]+0.10825317547305482*apar[0]*b_y[1]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*b_y[0]*apar[1]*hamil[4]*jacobtot_inv[5]+0.38971143170299727*jacobtot_inv[3]*hamil[4]*apar[5]*b_y[5]+0.10825317547305482*apar[0]*jacobtot_inv[1]*hamil[4]*b_y[5]+0.21650635094610965*jacobtot_inv[0]*apar[1]*hamil[4]*b_y[5]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[4]*apar[5]+0.21650635094610965*jacobtot_inv[0]*b_y[1]*hamil[4]*apar[5]+0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[4]+0.10825317547305482*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[4]+0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[4])*rdx2*rdz2)/vmap[1])/m_; + alphaz[8] = ((0.38971143170299727*hamil[4]*b_y[5]*jacobtot_inv[5]*apar[7]+0.19485571585149863*b_y[3]*jacobtot_inv[3]*hamil[4]*apar[7]+0.21650635094610965*b_y[1]*jacobtot_inv[1]*hamil[4]*apar[7]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[4]*apar[7]+0.19485571585149863*jacobtot_inv[3]*hamil[4]*b_y[5]*apar[6]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[4]*apar[6]+0.21650635094610965*b_y[1]*apar[4]*hamil[4]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[1]*apar[4]*hamil[4]*b_y[5]+0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[4]*b_y[5]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[4]*hamil[4]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[4]*hamil[4]+0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[4])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[9] = (((-(0.43571062644833425*b_x[1]*jacobtot_inv[5]*apar[7]*hamil[32])-0.43571062644833425*jacobtot_inv[1]*b_x[5]*apar[7]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[3]*apar[7]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_x[3]*apar[7]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[5]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_x[5]*apar[6]*hamil[32]-0.24206145913796356*b_x[1]*jacobtot_inv[3]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_x[3]*apar[6]*hamil[32]-0.43571062644833425*apar[4]*b_x[5]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[2]*b_x[3]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*apar[2]*jacobtot_inv[3]*b_x[5]*hamil[32]-0.24206145913796356*b_x[3]*jacobtot_inv[3]*apar[4]*hamil[32]-0.43571062644833425*b_x[1]*jacobtot_inv[1]*apar[4]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[0]*apar[4]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[1]*apar[2]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_x[1]*apar[2]*hamil[32])*rdy2*rdz2)/vmap[1]+((0.24206145913796356*apar[0]*b_y[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_y[0]*apar[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[1]*b_y[3]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_y[1]*apar[3]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*apar[5]*b_y[5]*hamil[32]+0.4841229182759271*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[32]+0.4841229182759271*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[32]+0.24206145913796356*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[32]+0.24206145913796356*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[32])*rdx2*rdz2)/vmap[1])/m_; + alphaz[10] = ((0.4841229182759271*b_y[1]*jacobtot_inv[5]*apar[7]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*b_y[5]*apar[7]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[3]*apar[7]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_y[3]*apar[7]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[32]+0.24206145913796356*b_y[1]*jacobtot_inv[3]*apar[6]*hamil[32]+0.4841229182759271*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[2]*jacobtot_inv[3]*b_y[5]*hamil[32]+0.24206145913796356*b_y[3]*jacobtot_inv[3]*apar[4]*hamil[32]+0.4841229182759271*b_y[1]*jacobtot_inv[1]*apar[4]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[0]*apar[4]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[32])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[11] = (((-(0.43571062644833425*b_x[3]*jacobtot_inv[5]*apar[7]*hamil[32])-0.43571062644833425*jacobtot_inv[3]*b_x[5]*apar[7]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[1]*apar[7]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_x[1]*apar[7]*hamil[32]-0.43571062644833425*b_x[5]*jacobtot_inv[5]*apar[6]*hamil[32]-0.43571062644833425*b_x[3]*jacobtot_inv[3]*apar[6]*hamil[32]-0.24206145913796356*b_x[1]*jacobtot_inv[1]*apar[6]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[0]*apar[6]*hamil[32]-0.24206145913796356*b_x[0]*apar[4]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_x[1]*apar[2]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[4]*b_x[5]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*apar[2]*b_x[5]*hamil[32]-0.24206145913796356*b_x[1]*jacobtot_inv[3]*apar[4]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*b_x[3]*apar[4]*hamil[32]-0.24206145913796356*b_x[0]*apar[2]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((0.8714212528966685*apar[5]*b_y[5]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*apar[1]*b_y[1]*jacobtot_inv[5]*hamil[32]+0.43571062644833425*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[32]+0.4841229182759271*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[0]*b_y[5]*hamil[32]+0.43571062644833425*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[32]+0.4841229182759271*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[0]*apar[5]*hamil[32]+0.24206145913796356*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[32])*rdx2*rdz2)/vmap[1])/m_; + alphaz[16] = ((0.19485571585149863*b_y[3]*hamil[4]*jacobtot_inv[5]*apar[7]+0.38971143170299727*jacobtot_inv[3]*hamil[4]*b_y[5]*apar[7]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[4]*apar[7]+0.21650635094610965*jacobtot_inv[0]*b_y[1]*hamil[4]*apar[7]+0.19485571585149863*hamil[4]*b_y[5]*jacobtot_inv[5]*apar[6]+0.10825317547305482*b_y[1]*jacobtot_inv[1]*hamil[4]*apar[6]+0.10825317547305482*b_y[0]*apar[4]*hamil[4]*jacobtot_inv[5]+0.10825317547305482*b_y[1]*apar[2]*hamil[4]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[0]*apar[4]*hamil[4]*b_y[5]+0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[4]*b_y[5]+0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[4]*hamil[4]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[4]*hamil[4])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[17] = ((0.24206145913796356*b_y[0]*jacobtot_inv[5]*apar[7]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_y[5]*apar[7]*hamil[32]+0.4841229182759271*b_y[1]*jacobtot_inv[3]*apar[7]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_y[3]*apar[7]*hamil[32]+0.24206145913796356*b_y[1]*jacobtot_inv[5]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[32]+0.24206145913796356*apar[2]*b_y[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_y[3]*apar[4]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[1]*apar[4]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_y[1]*apar[4]*hamil[32]+0.24206145913796356*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[32])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[18] = (((-(0.7842791276070014*b_x[5]*jacobtot_inv[5]*apar[7]*hamil[32])-0.43571062644833425*b_x[3]*jacobtot_inv[3]*apar[7]*hamil[32]-0.43571062644833425*b_x[1]*jacobtot_inv[1]*apar[7]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[0]*apar[7]*hamil[32]-0.43571062644833425*b_x[3]*jacobtot_inv[5]*apar[6]*hamil[32]-0.43571062644833425*jacobtot_inv[3]*b_x[5]*apar[6]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[1]*apar[6]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_x[1]*apar[6]*hamil[32]-0.43571062644833425*b_x[1]*apar[4]*jacobtot_inv[5]*hamil[32]-0.24206145913796356*b_x[0]*apar[2]*jacobtot_inv[5]*hamil[32]-0.43571062644833425*jacobtot_inv[1]*apar[4]*b_x[5]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*apar[2]*b_x[5]*hamil[32]-0.24206145913796356*b_x[0]*jacobtot_inv[3]*apar[4]*hamil[32]-0.24206145913796356*jacobtot_inv[0]*b_x[3]*apar[4]*hamil[32]-0.24206145913796356*b_x[1]*apar[2]*jacobtot_inv[3]*hamil[32]-0.24206145913796356*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((0.43571062644833425*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[32]+0.43571062644833425*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*apar[0]*b_y[1]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_y[0]*apar[1]*jacobtot_inv[5]*hamil[32]+0.8714212528966685*jacobtot_inv[3]*apar[5]*b_y[5]*hamil[32]+0.24206145913796356*apar[0]*jacobtot_inv[1]*b_y[5]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[1]*apar[5]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[32]+0.4841229182759271*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[32]+0.24206145913796356*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[32]+0.24206145913796356*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[32])*rdx2*rdz2)/vmap[1])/m_; + alphaz[19] = ((0.8714212528966685*b_y[5]*jacobtot_inv[5]*apar[7]*hamil[32]+0.43571062644833425*b_y[3]*jacobtot_inv[3]*apar[7]*hamil[32]+0.4841229182759271*b_y[1]*jacobtot_inv[1]*apar[7]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[0]*apar[7]*hamil[32]+0.43571062644833425*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_y[1]*apar[6]*hamil[32]+0.4841229182759271*b_y[1]*apar[4]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*apar[2]*b_y[5]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[3]*apar[4]*hamil[32]+0.24206145913796356*jacobtot_inv[0]*b_y[3]*apar[4]*hamil[32]+0.24206145913796356*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[32])*rdx2*rdz2)/(vmap[1]*m_); + alphaz[26] = ((0.43571062644833425*b_y[3]*jacobtot_inv[5]*apar[7]*hamil[32]+0.8714212528966685*jacobtot_inv[3]*b_y[5]*apar[7]*hamil[32]+0.24206145913796356*b_y[0]*jacobtot_inv[1]*apar[7]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*b_y[1]*apar[7]*hamil[32]+0.43571062644833425*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[32]+0.24206145913796356*b_y[1]*jacobtot_inv[1]*apar[6]*hamil[32]+0.24206145913796356*b_y[0]*apar[4]*jacobtot_inv[5]*hamil[32]+0.24206145913796356*b_y[1]*apar[2]*jacobtot_inv[5]*hamil[32]+0.4841229182759271*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*apar[2]*b_y[5]*hamil[32]+0.4841229182759271*b_y[1]*jacobtot_inv[3]*apar[4]*hamil[32]+0.24206145913796356*jacobtot_inv[1]*b_y[3]*apar[4]*hamil[32])*rdx2*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.19485571585149863*apar[1]*b_x[5]*jacobtot_inv[5]*hamil[16])-0.19485571585149863*b_x[1]*apar[5]*jacobtot_inv[5]*hamil[16]-0.10825317547305482*apar[0]*b_x[3]*jacobtot_inv[5]*hamil[16]-0.10825317547305482*b_x[0]*apar[3]*jacobtot_inv[5]*hamil[16]-0.38971143170299727*jacobtot_inv[1]*apar[5]*b_x[5]*hamil[16]-0.10825317547305482*apar[0]*jacobtot_inv[3]*b_x[5]*hamil[16]-0.21650635094610965*jacobtot_inv[0]*apar[3]*b_x[5]*hamil[16]-0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[5]*hamil[16]-0.21650635094610965*jacobtot_inv[0]*b_x[3]*apar[5]*hamil[16]-0.10825317547305482*apar[1]*b_x[3]*jacobtot_inv[3]*hamil[16]-0.10825317547305482*b_x[1]*apar[3]*jacobtot_inv[3]*hamil[16]-0.21650635094610965*jacobtot_inv[1]*apar[3]*b_x[3]*hamil[16]-0.10825317547305482*apar[0]*b_x[5]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*b_x[0]*apar[5]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*apar[1]*b_x[3]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*b_x[1]*apar[3]*jacobtot_inv[5]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*apar[5]*b_x[5]*hamil[8]-0.10825317547305482*apar[1]*jacobtot_inv[3]*b_x[5]*hamil[8]-0.21650635094610965*jacobtot_inv[1]*apar[3]*b_x[5]*hamil[8]-0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[5]*hamil[8]-0.21650635094610965*jacobtot_inv[1]*b_x[3]*apar[5]*hamil[8]-0.10825317547305482*apar[0]*b_x[3]*jacobtot_inv[3]*hamil[8]-0.10825317547305482*b_x[0]*apar[3]*jacobtot_inv[3]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*apar[3]*b_x[3]*hamil[8]+0.19485571585149863*b_x[1]*jacobtot_inv[5]*apar[7]*hamil[7]+0.19485571585149863*jacobtot_inv[1]*b_x[5]*apar[7]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[7]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[7]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[5]*apar[6]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_x[5]*apar[6]*hamil[7]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[6]*hamil[7]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[6]*hamil[7]+0.19485571585149863*apar[4]*b_x[5]*jacobtot_inv[5]*hamil[7]+0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[5]*hamil[7]+0.10825317547305482*apar[2]*jacobtot_inv[3]*b_x[5]*hamil[7]+0.10825317547305482*b_x[3]*jacobtot_inv[3]*apar[4]*hamil[7]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[4]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[4]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[2]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[2]*hamil[7]+0.10825317547305482*b_x[0]*hamil[3]*jacobtot_inv[5]*apar[7]+0.10825317547305482*jacobtot_inv[0]*hamil[3]*b_x[5]*apar[7]+0.10825317547305482*b_x[1]*hamil[3]*jacobtot_inv[3]*apar[7]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*hamil[3]*apar[7]-0.38971143170299727*apar[5]*b_x[5]*jacobtot_inv[5]*hamil[6]-0.21650635094610965*apar[3]*b_x[3]*jacobtot_inv[5]*hamil[6]-0.21650635094610965*apar[3]*jacobtot_inv[3]*b_x[5]*hamil[6]-0.19485571585149863*apar[1]*jacobtot_inv[1]*b_x[5]*hamil[6]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_x[5]*hamil[6]-0.21650635094610965*b_x[3]*jacobtot_inv[3]*apar[5]*hamil[6]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[5]*hamil[6]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[5]*hamil[6]-0.10825317547305482*apar[0]*jacobtot_inv[1]*b_x[3]*hamil[6]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_x[3]*hamil[6]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[3]*hamil[6]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[3]*hamil[6]+0.10825317547305482*b_x[1]*hamil[3]*jacobtot_inv[5]*apar[6]+0.10825317547305482*jacobtot_inv[1]*hamil[3]*b_x[5]*apar[6]+0.10825317547305482*b_x[0]*hamil[3]*jacobtot_inv[3]*apar[6]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*hamil[3]*apar[6]+0.10825317547305482*apar[2]*hamil[3]*b_x[5]*jacobtot_inv[5]-0.21650635094610965*hamil[2]*apar[3]*b_x[5]*jacobtot_inv[5]-0.21650635094610965*hamil[2]*b_x[3]*apar[5]*jacobtot_inv[5]+0.10825317547305482*b_x[3]*hamil[3]*apar[4]*jacobtot_inv[5]-0.21650635094610965*hamil[2]*jacobtot_inv[3]*apar[5]*b_x[5]+0.10825317547305482*hamil[3]*jacobtot_inv[3]*apar[4]*b_x[5]-0.10825317547305482*apar[0]*jacobtot_inv[1]*hamil[2]*b_x[5]-0.10825317547305482*jacobtot_inv[0]*apar[1]*hamil[2]*b_x[5]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[2]*apar[5]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[2]*apar[5]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[3]*apar[4]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[3]*apar[4]+0.10825317547305482*apar[2]*b_x[3]*hamil[3]*jacobtot_inv[3]-0.21650635094610965*hamil[2]*apar[3]*b_x[3]*jacobtot_inv[3]+0.10825317547305482*b_x[1]*jacobtot_inv[1]*apar[2]*hamil[3]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[2]*hamil[3]-0.10825317547305482*apar[1]*jacobtot_inv[1]*hamil[2]*b_x[3]-0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[2]*b_x[3]-0.10825317547305482*b_x[1]*jacobtot_inv[1]*hamil[2]*apar[3]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[2]*apar[3])*rdy2*rdz2)/vmap[1]+((-(0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[7]*hamil[16])+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[7]*hamil[16]+0.10825317547305482*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[16]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[6]*hamil[16]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*apar[6]*hamil[16]-0.10825317547305482*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[16]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[4]*hamil[16]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[4]*hamil[16]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[16]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[16]-0.21650635094610965*b_y[1]*jacobtot_inv[5]*apar[7]*hamil[8]-0.21650635094610965*jacobtot_inv[1]*b_y[5]*apar[7]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[7]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[7]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[8]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[6]*hamil[8]-0.21650635094610965*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*apar[2]*jacobtot_inv[3]*b_y[5]*hamil[8]-0.10825317547305482*b_y[3]*jacobtot_inv[3]*apar[4]*hamil[8]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*apar[4]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[4]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[8]-0.10825317547305482*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[7]+0.10825317547305482*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[7]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[7]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[7]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[7]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[7]+0.21650635094610965*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[7]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[7]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[7]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[7]+0.21650635094610965*b_y[3]*jacobtot_inv[5]*hamil[6]*apar[7]+0.21650635094610965*jacobtot_inv[3]*b_y[5]*hamil[6]*apar[7]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[6]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[6]*apar[7]+0.21650635094610965*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[6]+0.21650635094610965*b_y[3]*jacobtot_inv[3]*apar[6]*hamil[6]+0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[6]*hamil[6]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[6]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[6]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[5]*hamil[6]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[4]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[6]-0.21650635094610965*apar[1]*hamil[3]*b_y[5]*jacobtot_inv[5]+0.21650635094610965*hamil[1]*apar[3]*b_y[5]*jacobtot_inv[5]-0.21650635094610965*b_y[1]*hamil[3]*apar[5]*jacobtot_inv[5]+0.21650635094610965*hamil[1]*b_y[3]*apar[5]*jacobtot_inv[5]+0.21650635094610965*hamil[1]*jacobtot_inv[3]*apar[5]*b_y[5]-0.21650635094610965*jacobtot_inv[1]*hamil[3]*apar[5]*b_y[5]-0.10825317547305482*apar[0]*hamil[3]*jacobtot_inv[3]*b_y[5]-0.10825317547305482*jacobtot_inv[0]*apar[3]*hamil[3]*b_y[5]+0.10825317547305482*apar[0]*hamil[1]*jacobtot_inv[1]*b_y[5]+0.10825317547305482*jacobtot_inv[0]*apar[1]*hamil[1]*b_y[5]-0.10825317547305482*b_y[0]*hamil[3]*jacobtot_inv[3]*apar[5]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*hamil[3]*apar[5]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[1]*apar[5]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[1]*apar[5]-0.10825317547305482*apar[1]*b_y[3]*hamil[3]*jacobtot_inv[3]-0.10825317547305482*b_y[1]*apar[3]*hamil[3]*jacobtot_inv[3]+0.21650635094610965*hamil[1]*apar[3]*b_y[3]*jacobtot_inv[3]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[3]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[3]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[3]+0.10825317547305482*apar[1]*hamil[1]*jacobtot_inv[1]*b_y[3]+0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[1]*b_y[3]+0.10825317547305482*b_y[1]*hamil[1]*jacobtot_inv[1]*apar[3]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[1]*apar[3])*rdx2*rdz2)/vmap[1]+((0.19485571585149863*apar[3]*b_z[5]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*b_z[3]*apar[5]*jacobtot_inv[5]*hamil[16]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[5]*hamil[16]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[5]*hamil[16]+0.38971143170299727*jacobtot_inv[3]*apar[5]*b_z[5]*hamil[16]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_z[5]*hamil[16]+0.21650635094610965*jacobtot_inv[0]*apar[1]*b_z[5]*hamil[16]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[5]*hamil[16]+0.21650635094610965*jacobtot_inv[0]*b_z[1]*apar[5]*hamil[16]+0.21650635094610965*apar[1]*b_z[1]*jacobtot_inv[3]*hamil[16]+0.10825317547305482*apar[1]*jacobtot_inv[1]*b_z[3]*hamil[16]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[3]*hamil[16]+0.38971143170299727*apar[5]*b_z[5]*jacobtot_inv[5]*hamil[8]+0.21650635094610965*apar[1]*b_z[1]*jacobtot_inv[5]*hamil[8]+0.19485571585149863*apar[3]*jacobtot_inv[3]*b_z[5]*hamil[8]+0.21650635094610965*apar[1]*jacobtot_inv[1]*b_z[5]*hamil[8]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_z[5]*hamil[8]+0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[5]*hamil[8]+0.21650635094610965*b_z[1]*jacobtot_inv[1]*apar[5]*hamil[8]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[5]*hamil[8]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[3]*hamil[8]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[3]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_z[3]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[3]*hamil[8]-0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[7]*hamil[7]-0.19485571585149863*jacobtot_inv[3]*b_z[5]*apar[7]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[7]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[7]*hamil[7]-0.19485571585149863*b_z[5]*jacobtot_inv[5]*apar[6]*hamil[7]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[6]*hamil[7]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[6]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[6]*hamil[7]-0.10825317547305482*b_z[0]*apar[4]*jacobtot_inv[5]*hamil[7]-0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[5]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*apar[4]*b_z[5]*hamil[7]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[5]*hamil[7]-0.10825317547305482*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[7]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[4]*hamil[7]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[3]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[3]*hamil[7]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[5]*apar[7]-0.10825317547305482*jacobtot_inv[0]*hamil[1]*b_z[5]*apar[7]-0.10825317547305482*b_z[1]*hamil[1]*jacobtot_inv[3]*apar[7]-0.10825317547305482*hamil[1]*jacobtot_inv[1]*b_z[3]*apar[7]+0.10825317547305482*apar[0]*b_z[5]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*b_z[0]*apar[5]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*apar[1]*b_z[3]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*b_z[1]*apar[3]*jacobtot_inv[5]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*apar[5]*b_z[5]*hamil[6]+0.21650635094610965*apar[1]*jacobtot_inv[3]*b_z[5]*hamil[6]+0.10825317547305482*jacobtot_inv[1]*apar[3]*b_z[5]*hamil[6]+0.21650635094610965*b_z[1]*jacobtot_inv[3]*apar[5]*hamil[6]+0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[5]*hamil[6]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[1]*hamil[6]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[1]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*apar[1]*b_z[1]*hamil[6]-0.10825317547305482*b_z[1]*hamil[1]*jacobtot_inv[5]*apar[6]-0.10825317547305482*hamil[1]*jacobtot_inv[1]*b_z[5]*apar[6]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[3]*apar[6]-0.10825317547305482*jacobtot_inv[0]*hamil[1]*b_z[3]*apar[6]+0.21650635094610965*apar[1]*hamil[2]*b_z[5]*jacobtot_inv[5]-0.10825317547305482*hamil[1]*apar[2]*b_z[5]*jacobtot_inv[5]+0.21650635094610965*b_z[1]*hamil[2]*apar[5]*jacobtot_inv[5]-0.10825317547305482*hamil[1]*b_z[3]*apar[4]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[1]*hamil[2]*apar[5]*b_z[5]-0.10825317547305482*hamil[1]*jacobtot_inv[3]*apar[4]*b_z[5]+0.10825317547305482*apar[0]*hamil[2]*jacobtot_inv[3]*b_z[5]+0.10825317547305482*jacobtot_inv[0]*hamil[2]*apar[3]*b_z[5]+0.10825317547305482*b_z[0]*hamil[2]*jacobtot_inv[3]*apar[5]+0.10825317547305482*jacobtot_inv[0]*hamil[2]*b_z[3]*apar[5]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[1]*apar[4]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[1]*apar[4]+0.10825317547305482*apar[1]*hamil[2]*b_z[3]*jacobtot_inv[3]-0.10825317547305482*hamil[1]*apar[2]*b_z[3]*jacobtot_inv[3]+0.10825317547305482*b_z[1]*hamil[2]*apar[3]*jacobtot_inv[3]+0.21650635094610965*apar[1]*b_z[1]*jacobtot_inv[1]*hamil[2]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_z[1]*hamil[2]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[1]*hamil[2]-0.10825317547305482*b_z[1]*hamil[1]*jacobtot_inv[1]*apar[2]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[1]*apar[2])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[1] = (((-(0.19485571585149863*apar[0]*b_x[5]*jacobtot_inv[5]*hamil[16])-0.19485571585149863*b_x[0]*apar[5]*jacobtot_inv[5]*hamil[16]-0.19485571585149863*apar[1]*b_x[3]*jacobtot_inv[5]*hamil[16]-0.19485571585149863*b_x[1]*apar[3]*jacobtot_inv[5]*hamil[16]-0.38971143170299727*jacobtot_inv[0]*apar[5]*b_x[5]*hamil[16]-0.19485571585149863*apar[1]*jacobtot_inv[3]*b_x[5]*hamil[16]-0.38971143170299727*jacobtot_inv[1]*apar[3]*b_x[5]*hamil[16]-0.19485571585149863*b_x[1]*jacobtot_inv[3]*apar[5]*hamil[16]-0.38971143170299727*jacobtot_inv[1]*b_x[3]*apar[5]*hamil[16]-0.10825317547305482*apar[0]*b_x[3]*jacobtot_inv[3]*hamil[16]-0.10825317547305482*b_x[0]*apar[3]*jacobtot_inv[3]*hamil[16]-0.21650635094610965*jacobtot_inv[0]*apar[3]*b_x[3]*hamil[16]-0.19485571585149863*apar[1]*b_x[5]*jacobtot_inv[5]*hamil[8]-0.19485571585149863*b_x[1]*apar[5]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*apar[0]*b_x[3]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*b_x[0]*apar[3]*jacobtot_inv[5]*hamil[8]-0.38971143170299727*jacobtot_inv[1]*apar[5]*b_x[5]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[3]*b_x[5]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*apar[3]*b_x[5]*hamil[8]-0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[5]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*b_x[3]*apar[5]*hamil[8]-0.10825317547305482*apar[1]*b_x[3]*jacobtot_inv[3]*hamil[8]-0.10825317547305482*b_x[1]*apar[3]*jacobtot_inv[3]*hamil[8]-0.21650635094610965*jacobtot_inv[1]*apar[3]*b_x[3]*hamil[8]+0.19485571585149863*b_x[0]*jacobtot_inv[5]*apar[7]*hamil[7]+0.19485571585149863*jacobtot_inv[0]*b_x[5]*apar[7]*hamil[7]+0.19485571585149863*b_x[1]*jacobtot_inv[3]*apar[7]*hamil[7]+0.19485571585149863*jacobtot_inv[1]*b_x[3]*apar[7]*hamil[7]+0.19485571585149863*b_x[1]*jacobtot_inv[5]*apar[6]*hamil[7]+0.19485571585149863*jacobtot_inv[1]*b_x[5]*apar[6]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[6]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[6]*hamil[7]+0.19485571585149863*apar[2]*b_x[5]*jacobtot_inv[5]*hamil[7]+0.19485571585149863*b_x[3]*apar[4]*jacobtot_inv[5]*hamil[7]+0.19485571585149863*jacobtot_inv[3]*apar[4]*b_x[5]*hamil[7]+0.19485571585149863*b_x[0]*jacobtot_inv[1]*apar[4]*hamil[7]+0.19485571585149863*jacobtot_inv[0]*b_x[1]*apar[4]*hamil[7]+0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[3]*hamil[7]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[2]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[2]*hamil[7]+0.19485571585149863*b_x[1]*hamil[3]*jacobtot_inv[5]*apar[7]+0.19485571585149863*jacobtot_inv[1]*hamil[3]*b_x[5]*apar[7]+0.10825317547305482*b_x[0]*hamil[3]*jacobtot_inv[3]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*hamil[3]*apar[7]-0.38971143170299727*apar[3]*b_x[5]*jacobtot_inv[5]*hamil[6]-0.38971143170299727*b_x[3]*apar[5]*jacobtot_inv[5]*hamil[6]-0.38971143170299727*jacobtot_inv[3]*apar[5]*b_x[5]*hamil[6]-0.19485571585149863*apar[0]*jacobtot_inv[1]*b_x[5]*hamil[6]-0.19485571585149863*jacobtot_inv[0]*apar[1]*b_x[5]*hamil[6]-0.19485571585149863*b_x[0]*jacobtot_inv[1]*apar[5]*hamil[6]-0.19485571585149863*jacobtot_inv[0]*b_x[1]*apar[5]*hamil[6]-0.21650635094610965*apar[3]*b_x[3]*jacobtot_inv[3]*hamil[6]-0.19485571585149863*apar[1]*jacobtot_inv[1]*b_x[3]*hamil[6]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_x[3]*hamil[6]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[3]*hamil[6]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[3]*hamil[6]+0.10825317547305482*b_x[0]*hamil[3]*jacobtot_inv[5]*apar[6]+0.10825317547305482*jacobtot_inv[0]*hamil[3]*b_x[5]*apar[6]+0.10825317547305482*b_x[1]*hamil[3]*jacobtot_inv[3]*apar[6]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*hamil[3]*apar[6]-0.38971143170299727*hamil[2]*apar[5]*b_x[5]*jacobtot_inv[5]+0.19485571585149863*hamil[3]*apar[4]*b_x[5]*jacobtot_inv[5]+0.10825317547305482*apar[2]*b_x[3]*hamil[3]*jacobtot_inv[5]-0.21650635094610965*hamil[2]*apar[3]*b_x[3]*jacobtot_inv[5]+0.10825317547305482*apar[2]*hamil[3]*jacobtot_inv[3]*b_x[5]-0.21650635094610965*hamil[2]*apar[3]*jacobtot_inv[3]*b_x[5]-0.19485571585149863*apar[1]*jacobtot_inv[1]*hamil[2]*b_x[5]-0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[2]*b_x[5]-0.21650635094610965*hamil[2]*b_x[3]*jacobtot_inv[3]*apar[5]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*hamil[2]*apar[5]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[2]*apar[5]+0.10825317547305482*b_x[3]*hamil[3]*jacobtot_inv[3]*apar[4]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*hamil[3]*apar[4]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[3]*apar[4]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[2]*hamil[3]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[2]*hamil[3]-0.10825317547305482*apar[0]*jacobtot_inv[1]*hamil[2]*b_x[3]-0.10825317547305482*jacobtot_inv[0]*apar[1]*hamil[2]*b_x[3]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[2]*apar[3]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[2]*apar[3])*rdy2*rdz2)/vmap[1]+((-(0.19485571585149863*b_y[1]*jacobtot_inv[5]*apar[7]*hamil[16])+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[7]*hamil[16]+0.10825317547305482*b_y[0]*jacobtot_inv[5]*apar[6]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[16]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*apar[6]*hamil[16]-0.19485571585149863*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[16]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[5]*hamil[16]-0.38971143170299727*b_y[1]*jacobtot_inv[1]*apar[4]*hamil[16]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[4]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[16]-0.10825317547305482*b_y[0]*jacobtot_inv[5]*apar[7]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*b_y[5]*apar[7]*hamil[8]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[7]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[7]*hamil[8]-0.10825317547305482*b_y[1]*jacobtot_inv[5]*apar[6]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[8]-0.10825317547305482*apar[2]*b_y[5]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*b_y[3]*apar[4]*jacobtot_inv[5]*hamil[8]-0.21650635094610965*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[4]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[4]*hamil[8]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[8]-0.19485571585149863*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[7]-0.19485571585149863*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[7]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[5]*hamil[7]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[5]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[7]+0.21650635094610965*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[7]-0.38971143170299727*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[7]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[7]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[7]+0.38971143170299727*b_y[5]*jacobtot_inv[5]*hamil[6]*apar[7]+0.21650635094610965*b_y[3]*jacobtot_inv[3]*hamil[6]*apar[7]+0.19485571585149863*b_y[1]*jacobtot_inv[1]*hamil[6]*apar[7]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[6]*apar[7]+0.21650635094610965*b_y[3]*jacobtot_inv[5]*apar[6]*hamil[6]+0.21650635094610965*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[6]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[6]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[6]*hamil[6]+0.19485571585149863*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[5]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[4]*hamil[6]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[6]+0.38971143170299727*hamil[1]*apar[5]*b_y[5]*jacobtot_inv[5]-0.10825317547305482*apar[0]*hamil[3]*b_y[5]*jacobtot_inv[5]-0.10825317547305482*b_y[0]*hamil[3]*apar[5]*jacobtot_inv[5]-0.10825317547305482*apar[1]*b_y[3]*hamil[3]*jacobtot_inv[5]-0.10825317547305482*b_y[1]*apar[3]*hamil[3]*jacobtot_inv[5]+0.21650635094610965*hamil[1]*apar[3]*b_y[3]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[0]*hamil[3]*apar[5]*b_y[5]-0.21650635094610965*apar[1]*hamil[3]*jacobtot_inv[3]*b_y[5]+0.21650635094610965*hamil[1]*apar[3]*jacobtot_inv[3]*b_y[5]-0.10825317547305482*jacobtot_inv[1]*apar[3]*hamil[3]*b_y[5]+0.19485571585149863*apar[1]*hamil[1]*jacobtot_inv[1]*b_y[5]+0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[1]*b_y[5]-0.21650635094610965*b_y[1]*hamil[3]*jacobtot_inv[3]*apar[5]+0.21650635094610965*hamil[1]*b_y[3]*jacobtot_inv[3]*apar[5]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*hamil[3]*apar[5]+0.19485571585149863*b_y[1]*hamil[1]*jacobtot_inv[1]*apar[5]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[1]*apar[5]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[3]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[3]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[3]+0.10825317547305482*apar[0]*hamil[1]*jacobtot_inv[1]*b_y[3]+0.10825317547305482*jacobtot_inv[0]*apar[1]*hamil[1]*b_y[3]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[1]*apar[3]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[1]*apar[3])*rdx2*rdz2)/vmap[1]+((0.7014805770653949*apar[5]*b_z[5]*jacobtot_inv[5]*hamil[16]+0.38971143170299727*apar[1]*b_z[1]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*apar[3]*jacobtot_inv[3]*b_z[5]*hamil[16]+0.38971143170299727*apar[1]*jacobtot_inv[1]*b_z[5]*hamil[16]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_z[5]*hamil[16]+0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[5]*hamil[16]+0.38971143170299727*b_z[1]*jacobtot_inv[1]*apar[5]*hamil[16]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[5]*hamil[16]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[3]*hamil[16]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[3]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_z[3]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[3]*hamil[16]+0.19485571585149863*apar[3]*b_z[5]*jacobtot_inv[5]*hamil[8]+0.19485571585149863*b_z[3]*apar[5]*jacobtot_inv[5]*hamil[8]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[5]*hamil[8]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[5]*hamil[8]+0.38971143170299727*jacobtot_inv[3]*apar[5]*b_z[5]*hamil[8]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_z[5]*hamil[8]+0.21650635094610965*jacobtot_inv[0]*apar[1]*b_z[5]*hamil[8]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[5]*hamil[8]+0.21650635094610965*jacobtot_inv[0]*b_z[1]*apar[5]*hamil[8]+0.21650635094610965*apar[1]*b_z[1]*jacobtot_inv[3]*hamil[8]+0.10825317547305482*apar[1]*jacobtot_inv[1]*b_z[3]*hamil[8]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[3]*hamil[8]-0.35074028853269745*b_z[5]*jacobtot_inv[5]*apar[7]*hamil[7]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[7]*hamil[7]-0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[7]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[7]*hamil[7]-0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[6]*hamil[7]-0.19485571585149863*jacobtot_inv[3]*b_z[5]*apar[6]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[6]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[6]*hamil[7]-0.19485571585149863*b_z[1]*apar[4]*jacobtot_inv[5]*hamil[7]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[5]*hamil[7]-0.19485571585149863*jacobtot_inv[1]*apar[4]*b_z[5]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[5]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[4]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[4]*hamil[7]-0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[3]*hamil[7]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[3]*hamil[7]-0.19485571585149863*b_z[1]*hamil[1]*jacobtot_inv[5]*apar[7]-0.19485571585149863*hamil[1]*jacobtot_inv[1]*b_z[5]*apar[7]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[3]*apar[7]-0.10825317547305482*jacobtot_inv[0]*hamil[1]*b_z[3]*apar[7]+0.38971143170299727*apar[1]*b_z[5]*jacobtot_inv[5]*hamil[6]+0.38971143170299727*b_z[1]*apar[5]*jacobtot_inv[5]*hamil[6]+0.38971143170299727*jacobtot_inv[1]*apar[5]*b_z[5]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[3]*b_z[5]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*apar[3]*b_z[5]*hamil[6]+0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[5]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[5]*hamil[6]+0.10825317547305482*apar[1]*b_z[3]*jacobtot_inv[3]*hamil[6]+0.10825317547305482*b_z[1]*apar[3]*jacobtot_inv[3]*hamil[6]+0.38971143170299727*apar[1]*b_z[1]*jacobtot_inv[1]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_z[1]*hamil[6]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[1]*hamil[6]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[5]*apar[6]-0.10825317547305482*jacobtot_inv[0]*hamil[1]*b_z[5]*apar[6]-0.10825317547305482*b_z[1]*hamil[1]*jacobtot_inv[3]*apar[6]-0.10825317547305482*hamil[1]*jacobtot_inv[1]*b_z[3]*apar[6]-0.19485571585149863*hamil[1]*apar[4]*b_z[5]*jacobtot_inv[5]+0.10825317547305482*apar[0]*hamil[2]*b_z[5]*jacobtot_inv[5]+0.10825317547305482*b_z[0]*hamil[2]*apar[5]*jacobtot_inv[5]+0.10825317547305482*apar[1]*hamil[2]*b_z[3]*jacobtot_inv[5]-0.10825317547305482*hamil[1]*apar[2]*b_z[3]*jacobtot_inv[5]+0.10825317547305482*b_z[1]*hamil[2]*apar[3]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[0]*hamil[2]*apar[5]*b_z[5]+0.21650635094610965*apar[1]*hamil[2]*jacobtot_inv[3]*b_z[5]-0.10825317547305482*hamil[1]*apar[2]*jacobtot_inv[3]*b_z[5]+0.10825317547305482*jacobtot_inv[1]*hamil[2]*apar[3]*b_z[5]+0.21650635094610965*b_z[1]*hamil[2]*jacobtot_inv[3]*apar[5]+0.10825317547305482*jacobtot_inv[1]*hamil[2]*b_z[3]*apar[5]-0.10825317547305482*hamil[1]*b_z[3]*jacobtot_inv[3]*apar[4]-0.19485571585149863*b_z[1]*hamil[1]*jacobtot_inv[1]*apar[4]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[1]*apar[4]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[1]*hamil[2]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[1]*hamil[2]+0.21650635094610965*jacobtot_inv[0]*apar[1]*b_z[1]*hamil[2]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[1]*apar[2]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[1]*apar[2])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[2] = (((-(0.19485571585149863*jacobtot_inv[1]*b_x[5]*apar[7]*hamil[16])-0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[7]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*b_x[5]*apar[6]*hamil[16]-0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[6]*hamil[16]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[4]*hamil[16]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[4]*hamil[16]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[2]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[2]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*b_x[5]*apar[7]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[7]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*b_x[5]*apar[6]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[6]*hamil[8]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[4]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[4]*hamil[8]+0.10825317547305482*b_x[1]*jacobtot_inv[1]*apar[2]*hamil[8]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[2]*hamil[8]-0.38971143170299727*b_x[5]*jacobtot_inv[5]*hamil[6]*apar[7]-0.21650635094610965*b_x[3]*jacobtot_inv[3]*hamil[6]*apar[7]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*hamil[6]*apar[7]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[6]*apar[7]-0.21650635094610965*hamil[2]*b_x[3]*jacobtot_inv[5]*apar[7]-0.21650635094610965*hamil[2]*jacobtot_inv[3]*b_x[5]*apar[7]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[2]*apar[7]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[2]*apar[7]-0.21650635094610965*b_x[3]*jacobtot_inv[5]*apar[6]*hamil[6]-0.21650635094610965*jacobtot_inv[3]*b_x[5]*apar[6]*hamil[6]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[6]*hamil[6]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[6]*hamil[6]-0.19485571585149863*jacobtot_inv[1]*apar[4]*b_x[5]*hamil[6]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[5]*hamil[6]-0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[4]*hamil[6]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[6]-0.21650635094610965*hamil[2]*b_x[5]*jacobtot_inv[5]*apar[6]-0.21650635094610965*hamil[2]*b_x[3]*jacobtot_inv[3]*apar[6]-0.10825317547305482*b_x[1]*jacobtot_inv[1]*hamil[2]*apar[6]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[2]*apar[6]-0.10825317547305482*jacobtot_inv[0]*hamil[2]*apar[4]*b_x[5]-0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[2]*b_x[5]-0.10825317547305482*jacobtot_inv[1]*hamil[2]*b_x[3]*apar[4]-0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[2]*b_x[3])*rdy2*rdz2)/vmap[1]+((-(0.10825317547305482*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[16])+0.10825317547305482*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[16]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[16]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[16]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[16]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[16]+0.21650635094610965*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[16]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[16]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[16]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[16]-0.21650635094610965*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[8]-0.21650635094610965*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[8]-0.21650635094610965*jacobtot_inv[1]*apar[5]*b_y[5]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[3]*b_y[5]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[5]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[8]-0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[8]-0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[8]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[8]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[7]*hamil[7]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[7]*hamil[7]+0.10825317547305482*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[7]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[6]*hamil[7]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*apar[6]*hamil[7]-0.10825317547305482*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[7]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[4]*hamil[7]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[4]*hamil[7]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[7]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[7]-0.21650635094610965*b_y[1]*hamil[3]*jacobtot_inv[5]*apar[7]+0.21650635094610965*hamil[1]*b_y[3]*jacobtot_inv[5]*apar[7]+0.21650635094610965*hamil[1]*jacobtot_inv[3]*b_y[5]*apar[7]-0.21650635094610965*jacobtot_inv[1]*hamil[3]*b_y[5]*apar[7]-0.10825317547305482*b_y[0]*hamil[3]*jacobtot_inv[3]*apar[7]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*hamil[3]*apar[7]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[1]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[1]*apar[7]+0.21650635094610965*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[6]+0.21650635094610965*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[6]+0.21650635094610965*jacobtot_inv[3]*apar[5]*b_y[5]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[5]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[6]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[5]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[6]+0.21650635094610965*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[6]+0.10825317547305482*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[6]+0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[6]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[6]+0.21650635094610965*hamil[1]*b_y[5]*jacobtot_inv[5]*apar[6]-0.10825317547305482*jacobtot_inv[0]*hamil[3]*b_y[5]*apar[6]-0.10825317547305482*b_y[1]*hamil[3]*jacobtot_inv[3]*apar[6]+0.21650635094610965*hamil[1]*b_y[3]*jacobtot_inv[3]*apar[6]+0.10825317547305482*b_y[1]*hamil[1]*jacobtot_inv[1]*apar[6]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[1]*apar[6]-0.21650635094610965*hamil[3]*apar[4]*b_y[5]*jacobtot_inv[5]+0.10825317547305482*jacobtot_inv[0]*hamil[1]*apar[4]*b_y[5]-0.10825317547305482*apar[2]*hamil[3]*jacobtot_inv[3]*b_y[5]+0.10825317547305482*hamil[1]*jacobtot_inv[1]*apar[2]*b_y[5]-0.10825317547305482*b_y[3]*hamil[3]*jacobtot_inv[3]*apar[4]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*hamil[3]*apar[4]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[3]*apar[4]+0.10825317547305482*hamil[1]*jacobtot_inv[1]*b_y[3]*apar[4]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[3]+0.10825317547305482*jacobtot_inv[0]*hamil[1]*apar[2]*b_y[3])*rdx2*rdz2)/vmap[1]+((0.19485571585149863*jacobtot_inv[3]*b_z[5]*apar[7]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[7]*hamil[16]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[6]*hamil[16]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[6]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*apar[4]*b_z[5]*hamil[16]+0.10825317547305482*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[16]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[3]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[3]*hamil[16]+0.38971143170299727*b_z[5]*jacobtot_inv[5]*apar[7]*hamil[8]+0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[7]*hamil[8]+0.21650635094610965*b_z[1]*jacobtot_inv[1]*apar[7]*hamil[8]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[7]*hamil[8]+0.19485571585149863*jacobtot_inv[3]*b_z[5]*apar[6]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[6]*hamil[8]+0.21650635094610965*b_z[1]*apar[4]*jacobtot_inv[5]*hamil[8]+0.21650635094610965*jacobtot_inv[1]*apar[4]*b_z[5]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[5]*hamil[8]+0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[4]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[4]*hamil[8]+0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[3]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*b_z[5]*hamil[6]*apar[7]+0.10825317547305482*b_z[1]*jacobtot_inv[3]*hamil[6]*apar[7]+0.21650635094610965*b_z[1]*hamil[2]*jacobtot_inv[5]*apar[7]+0.21650635094610965*jacobtot_inv[1]*hamil[2]*b_z[5]*apar[7]+0.10825317547305482*b_z[0]*hamil[2]*jacobtot_inv[3]*apar[7]+0.10825317547305482*jacobtot_inv[0]*hamil[2]*b_z[3]*apar[7]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[6]*hamil[6]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[6]*hamil[6]+0.10825317547305482*jacobtot_inv[3]*apar[4]*b_z[5]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[6]-0.10825317547305482*apar[2]*b_z[3]*jacobtot_inv[3]*hamil[6]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[2]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*hamil[2]*b_z[5]*apar[6]+0.10825317547305482*b_z[1]*hamil[2]*jacobtot_inv[3]*apar[6]+0.21650635094610965*hamil[2]*apar[4]*b_z[5]*jacobtot_inv[5]+0.10825317547305482*apar[2]*hamil[2]*jacobtot_inv[3]*b_z[5]+0.10825317547305482*hamil[2]*b_z[3]*jacobtot_inv[3]*apar[4]+0.21650635094610965*b_z[1]*jacobtot_inv[1]*hamil[2]*apar[4]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[2]*apar[4]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[2])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[3] = (((-(0.7014805770653949*apar[5]*b_x[5]*jacobtot_inv[5]*hamil[16])-0.38971143170299727*apar[3]*b_x[3]*jacobtot_inv[5]*hamil[16]-0.38971143170299727*apar[3]*jacobtot_inv[3]*b_x[5]*hamil[16]-0.19485571585149863*apar[1]*jacobtot_inv[1]*b_x[5]*hamil[16]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_x[5]*hamil[16]-0.38971143170299727*b_x[3]*jacobtot_inv[3]*apar[5]*hamil[16]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[5]*hamil[16]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[5]*hamil[16]-0.10825317547305482*apar[0]*jacobtot_inv[1]*b_x[3]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_x[3]*hamil[16]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[3]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[3]*hamil[16]-0.38971143170299727*apar[3]*b_x[5]*jacobtot_inv[5]*hamil[8]-0.38971143170299727*b_x[3]*apar[5]*jacobtot_inv[5]*hamil[8]-0.38971143170299727*jacobtot_inv[3]*apar[5]*b_x[5]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[1]*b_x[5]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_x[5]*hamil[8]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[5]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[5]*hamil[8]-0.38971143170299727*apar[3]*b_x[3]*jacobtot_inv[3]*hamil[8]-0.10825317547305482*apar[1]*jacobtot_inv[1]*b_x[3]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_x[3]*hamil[8]-0.10825317547305482*b_x[1]*jacobtot_inv[1]*apar[3]*hamil[8]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[3]*hamil[8]+0.35074028853269745*b_x[5]*jacobtot_inv[5]*apar[7]*hamil[7]+0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[7]*hamil[7]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[7]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[7]*hamil[7]+0.19485571585149863*b_x[3]*jacobtot_inv[5]*apar[6]*hamil[7]+0.19485571585149863*jacobtot_inv[3]*b_x[5]*apar[6]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[6]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[6]*hamil[7]+0.19485571585149863*b_x[1]*apar[4]*jacobtot_inv[5]*hamil[7]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[5]*hamil[7]+0.19485571585149863*jacobtot_inv[1]*apar[4]*b_x[5]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[5]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[4]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[4]*hamil[7]+0.10825317547305482*b_x[1]*apar[2]*jacobtot_inv[3]*hamil[7]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[7]+0.19485571585149863*b_x[3]*hamil[3]*jacobtot_inv[5]*apar[7]+0.19485571585149863*hamil[3]*jacobtot_inv[3]*b_x[5]*apar[7]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[3]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[3]*apar[7]-0.19485571585149863*apar[1]*b_x[5]*jacobtot_inv[5]*hamil[6]-0.19485571585149863*b_x[1]*apar[5]*jacobtot_inv[5]*hamil[6]-0.10825317547305482*apar[0]*b_x[3]*jacobtot_inv[5]*hamil[6]-0.10825317547305482*b_x[0]*apar[3]*jacobtot_inv[5]*hamil[6]-0.38971143170299727*jacobtot_inv[1]*apar[5]*b_x[5]*hamil[6]-0.10825317547305482*apar[0]*jacobtot_inv[3]*b_x[5]*hamil[6]-0.21650635094610965*jacobtot_inv[0]*apar[3]*b_x[5]*hamil[6]-0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[5]*hamil[6]-0.21650635094610965*jacobtot_inv[0]*b_x[3]*apar[5]*hamil[6]-0.10825317547305482*apar[1]*b_x[3]*jacobtot_inv[3]*hamil[6]-0.10825317547305482*b_x[1]*apar[3]*jacobtot_inv[3]*hamil[6]-0.21650635094610965*jacobtot_inv[1]*apar[3]*b_x[3]*hamil[6]+0.19485571585149863*hamil[3]*b_x[5]*jacobtot_inv[5]*apar[6]+0.19485571585149863*b_x[3]*hamil[3]*jacobtot_inv[3]*apar[6]+0.10825317547305482*b_x[1]*jacobtot_inv[1]*hamil[3]*apar[6]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[3]*apar[6]-0.10825317547305482*apar[0]*hamil[2]*b_x[5]*jacobtot_inv[5]-0.10825317547305482*b_x[0]*hamil[2]*apar[5]*jacobtot_inv[5]+0.10825317547305482*b_x[0]*hamil[3]*apar[4]*jacobtot_inv[5]+0.10825317547305482*b_x[1]*apar[2]*hamil[3]*jacobtot_inv[5]-0.10825317547305482*apar[1]*hamil[2]*b_x[3]*jacobtot_inv[5]-0.10825317547305482*b_x[1]*hamil[2]*apar[3]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[0]*hamil[2]*apar[5]*b_x[5]+0.10825317547305482*jacobtot_inv[0]*hamil[3]*apar[4]*b_x[5]-0.10825317547305482*apar[1]*hamil[2]*jacobtot_inv[3]*b_x[5]+0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[3]*b_x[5]-0.21650635094610965*jacobtot_inv[1]*hamil[2]*apar[3]*b_x[5]-0.10825317547305482*b_x[1]*hamil[2]*jacobtot_inv[3]*apar[5]-0.21650635094610965*jacobtot_inv[1]*hamil[2]*b_x[3]*apar[5]+0.10825317547305482*b_x[1]*hamil[3]*jacobtot_inv[3]*apar[4]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*hamil[3]*apar[4]+0.10825317547305482*b_x[0]*apar[2]*hamil[3]*jacobtot_inv[3]-0.10825317547305482*apar[0]*hamil[2]*b_x[3]*jacobtot_inv[3]-0.10825317547305482*b_x[0]*hamil[2]*apar[3]*jacobtot_inv[3]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[3]-0.21650635094610965*jacobtot_inv[0]*hamil[2]*apar[3]*b_x[3])*rdy2*rdz2)/vmap[1]+((0.19485571585149863*b_y[3]*jacobtot_inv[5]*apar[7]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[7]*hamil[16]+0.19485571585149863*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[16]+0.38971143170299727*b_y[3]*jacobtot_inv[3]*apar[6]*hamil[16]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[6]*hamil[16]-0.10825317547305482*b_y[0]*apar[4]*jacobtot_inv[5]*hamil[16]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[5]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[16]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[4]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[16]-0.38971143170299727*b_y[5]*jacobtot_inv[5]*apar[7]*hamil[8]-0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[7]*hamil[8]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*apar[7]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[7]*hamil[8]-0.19485571585149863*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[6]*hamil[8]-0.21650635094610965*b_y[1]*apar[4]*jacobtot_inv[5]*hamil[8]-0.21650635094610965*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[5]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[4]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[4]*hamil[8]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[8]+0.19485571585149863*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[7]+0.19485571585149863*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[7]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[5]*hamil[7]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[5]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[7]+0.38971143170299727*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[7]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[7]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[7]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[7]+0.10825317547305482*b_y[0]*jacobtot_inv[5]*hamil[6]*apar[7]+0.21650635094610965*jacobtot_inv[0]*b_y[5]*hamil[6]*apar[7]+0.10825317547305482*b_y[1]*jacobtot_inv[3]*hamil[6]*apar[7]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*hamil[6]*apar[7]+0.10825317547305482*b_y[1]*jacobtot_inv[5]*apar[6]*hamil[6]+0.21650635094610965*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[6]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[6]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*apar[6]*hamil[6]+0.10825317547305482*apar[2]*b_y[5]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*b_y[3]*apar[4]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[6]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[6]-0.38971143170299727*hamil[3]*apar[5]*b_y[5]*jacobtot_inv[5]+0.10825317547305482*apar[0]*hamil[1]*b_y[5]*jacobtot_inv[5]+0.10825317547305482*b_y[0]*hamil[1]*apar[5]*jacobtot_inv[5]-0.21650635094610965*apar[1]*b_y[1]*hamil[3]*jacobtot_inv[5]+0.10825317547305482*apar[1]*hamil[1]*b_y[3]*jacobtot_inv[5]+0.10825317547305482*b_y[1]*hamil[1]*apar[3]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[0]*hamil[1]*apar[5]*b_y[5]-0.19485571585149863*apar[3]*hamil[3]*jacobtot_inv[3]*b_y[5]+0.10825317547305482*apar[1]*hamil[1]*jacobtot_inv[3]*b_y[5]-0.21650635094610965*apar[1]*jacobtot_inv[1]*hamil[3]*b_y[5]-0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[3]*b_y[5]+0.21650635094610965*hamil[1]*jacobtot_inv[1]*apar[3]*b_y[5]-0.19485571585149863*b_y[3]*hamil[3]*jacobtot_inv[3]*apar[5]+0.10825317547305482*b_y[1]*hamil[1]*jacobtot_inv[3]*apar[5]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*hamil[3]*apar[5]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[3]*apar[5]+0.21650635094610965*hamil[1]*jacobtot_inv[1]*b_y[3]*apar[5]-0.10825317547305482*apar[0]*b_y[1]*hamil[3]*jacobtot_inv[3]-0.10825317547305482*b_y[0]*apar[1]*hamil[3]*jacobtot_inv[3]+0.10825317547305482*apar[0]*hamil[1]*b_y[3]*jacobtot_inv[3]+0.10825317547305482*b_y[0]*hamil[1]*apar[3]*jacobtot_inv[3]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[3]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[3]+0.21650635094610965*jacobtot_inv[0]*hamil[1]*apar[3]*b_y[3])*rdx2*rdz2)/vmap[1]+((0.19485571585149863*apar[0]*b_z[5]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*b_z[0]*apar[5]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*apar[1]*b_z[3]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*b_z[1]*apar[3]*jacobtot_inv[5]*hamil[16]+0.38971143170299727*jacobtot_inv[0]*apar[5]*b_z[5]*hamil[16]+0.38971143170299727*apar[1]*jacobtot_inv[3]*b_z[5]*hamil[16]+0.19485571585149863*jacobtot_inv[1]*apar[3]*b_z[5]*hamil[16]+0.38971143170299727*b_z[1]*jacobtot_inv[3]*apar[5]*hamil[16]+0.19485571585149863*jacobtot_inv[1]*b_z[3]*apar[5]*hamil[16]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[1]*hamil[16]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[1]*hamil[16]+0.21650635094610965*jacobtot_inv[0]*apar[1]*b_z[1]*hamil[16]+0.38971143170299727*apar[1]*b_z[5]*jacobtot_inv[5]*hamil[8]+0.38971143170299727*b_z[1]*apar[5]*jacobtot_inv[5]*hamil[8]+0.38971143170299727*jacobtot_inv[1]*apar[5]*b_z[5]*hamil[8]+0.19485571585149863*apar[0]*jacobtot_inv[3]*b_z[5]*hamil[8]+0.19485571585149863*jacobtot_inv[0]*apar[3]*b_z[5]*hamil[8]+0.19485571585149863*b_z[0]*jacobtot_inv[3]*apar[5]*hamil[8]+0.19485571585149863*jacobtot_inv[0]*b_z[3]*apar[5]*hamil[8]+0.19485571585149863*apar[1]*b_z[3]*jacobtot_inv[3]*hamil[8]+0.19485571585149863*b_z[1]*apar[3]*jacobtot_inv[3]*hamil[8]+0.21650635094610965*apar[1]*b_z[1]*jacobtot_inv[1]*hamil[8]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_z[1]*hamil[8]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[1]*hamil[8]-0.19485571585149863*b_z[0]*jacobtot_inv[5]*apar[7]*hamil[7]-0.19485571585149863*jacobtot_inv[0]*b_z[5]*apar[7]*hamil[7]-0.19485571585149863*b_z[1]*jacobtot_inv[3]*apar[7]*hamil[7]-0.19485571585149863*jacobtot_inv[1]*b_z[3]*apar[7]*hamil[7]-0.19485571585149863*b_z[1]*jacobtot_inv[5]*apar[6]*hamil[7]-0.19485571585149863*jacobtot_inv[1]*b_z[5]*apar[6]*hamil[7]-0.19485571585149863*b_z[0]*jacobtot_inv[3]*apar[6]*hamil[7]-0.19485571585149863*jacobtot_inv[0]*b_z[3]*apar[6]*hamil[7]-0.19485571585149863*apar[2]*b_z[5]*jacobtot_inv[5]*hamil[7]-0.19485571585149863*b_z[3]*apar[4]*jacobtot_inv[5]*hamil[7]-0.19485571585149863*jacobtot_inv[3]*apar[4]*b_z[5]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[4]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[7]-0.19485571585149863*apar[2]*b_z[3]*jacobtot_inv[3]*hamil[7]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[2]*hamil[7]-0.19485571585149863*hamil[1]*b_z[3]*jacobtot_inv[5]*apar[7]-0.19485571585149863*hamil[1]*jacobtot_inv[3]*b_z[5]*apar[7]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[1]*apar[7]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[1]*apar[7]+0.19485571585149863*apar[3]*b_z[5]*jacobtot_inv[5]*hamil[6]+0.19485571585149863*b_z[3]*apar[5]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[5]*hamil[6]+0.38971143170299727*jacobtot_inv[3]*apar[5]*b_z[5]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_z[5]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*apar[1]*b_z[5]*hamil[6]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[5]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*b_z[1]*apar[5]*hamil[6]+0.21650635094610965*apar[1]*b_z[1]*jacobtot_inv[3]*hamil[6]+0.10825317547305482*apar[1]*jacobtot_inv[1]*b_z[3]*hamil[6]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[3]*hamil[6]-0.19485571585149863*hamil[1]*b_z[5]*jacobtot_inv[5]*apar[6]-0.19485571585149863*hamil[1]*b_z[3]*jacobtot_inv[3]*apar[6]-0.10825317547305482*b_z[1]*hamil[1]*jacobtot_inv[1]*apar[6]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[1]*apar[6]+0.38971143170299727*hamil[2]*apar[5]*b_z[5]*jacobtot_inv[5]-0.10825317547305482*b_z[0]*hamil[1]*apar[4]*jacobtot_inv[5]+0.21650635094610965*apar[1]*b_z[1]*hamil[2]*jacobtot_inv[5]-0.10825317547305482*b_z[1]*hamil[1]*apar[2]*jacobtot_inv[5]-0.10825317547305482*jacobtot_inv[0]*hamil[1]*apar[4]*b_z[5]+0.19485571585149863*hamil[2]*apar[3]*jacobtot_inv[3]*b_z[5]+0.21650635094610965*apar[1]*jacobtot_inv[1]*hamil[2]*b_z[5]+0.10825317547305482*apar[0]*jacobtot_inv[0]*hamil[2]*b_z[5]-0.10825317547305482*hamil[1]*jacobtot_inv[1]*apar[2]*b_z[5]+0.19485571585149863*hamil[2]*b_z[3]*jacobtot_inv[3]*apar[5]+0.21650635094610965*b_z[1]*jacobtot_inv[1]*hamil[2]*apar[5]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[2]*apar[5]-0.10825317547305482*b_z[1]*hamil[1]*jacobtot_inv[3]*apar[4]-0.10825317547305482*hamil[1]*jacobtot_inv[1]*b_z[3]*apar[4]+0.10825317547305482*apar[0]*b_z[1]*hamil[2]*jacobtot_inv[3]+0.10825317547305482*b_z[0]*apar[1]*hamil[2]*jacobtot_inv[3]-0.10825317547305482*b_z[0]*hamil[1]*apar[2]*jacobtot_inv[3]+0.10825317547305482*jacobtot_inv[0]*apar[1]*hamil[2]*b_z[3]-0.10825317547305482*jacobtot_inv[0]*hamil[1]*apar[2]*b_z[3]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[2]*apar[3])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[5] = (((0.19485571585149863*b_x[1]*jacobtot_inv[5]*apar[7]*hamil[21]+0.19485571585149863*jacobtot_inv[1]*b_x[5]*apar[7]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[7]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[7]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[5]*apar[6]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*b_x[5]*apar[6]*hamil[21]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[6]*hamil[21]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[6]*hamil[21]+0.19485571585149863*apar[4]*b_x[5]*jacobtot_inv[5]*hamil[21]+0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[5]*hamil[21]+0.10825317547305482*apar[2]*jacobtot_inv[3]*b_x[5]*hamil[21]+0.10825317547305482*b_x[3]*jacobtot_inv[3]*apar[4]*hamil[21]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[4]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[4]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[2]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[2]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[5]*apar[7]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[5]*apar[7]*hamil[14]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[7]*hamil[14]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[7]*hamil[14]+0.10825317547305482*b_x[1]*jacobtot_inv[5]*apar[6]*hamil[14]+0.10825317547305482*jacobtot_inv[1]*b_x[5]*apar[6]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[6]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[6]*hamil[14]+0.10825317547305482*apar[2]*b_x[5]*jacobtot_inv[5]*hamil[14]+0.10825317547305482*b_x[3]*apar[4]*jacobtot_inv[5]*hamil[14]+0.10825317547305482*jacobtot_inv[3]*apar[4]*b_x[5]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[4]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[4]*hamil[14]+0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[3]*hamil[14]+0.10825317547305482*b_x[1]*jacobtot_inv[1]*apar[2]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[2]*hamil[14])*rdy2*rdz2)/vmap[1]+((-(0.10825317547305482*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[21])+0.10825317547305482*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[21]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[21]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[21]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[21]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[21]+0.21650635094610965*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[21]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[21]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[21]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[21]-0.21650635094610965*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[14]-0.21650635094610965*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[14]-0.21650635094610965*jacobtot_inv[1]*apar[5]*b_y[5]*hamil[14]-0.10825317547305482*apar[0]*jacobtot_inv[3]*b_y[5]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[5]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[14]-0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[14]-0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[14]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[14]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[14]+0.21650635094610965*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[12]+0.21650635094610965*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[12]+0.21650635094610965*jacobtot_inv[3]*apar[5]*b_y[5]*hamil[12]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[5]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[5]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[12]+0.21650635094610965*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[12]+0.10825317547305482*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[12]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[12]+0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[7]*hamil[21])-0.19485571585149863*jacobtot_inv[3]*b_z[5]*apar[7]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[7]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[7]*hamil[21]-0.19485571585149863*b_z[5]*jacobtot_inv[5]*apar[6]*hamil[21]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[6]*hamil[21]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[6]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[6]*hamil[21]-0.10825317547305482*b_z[0]*apar[4]*jacobtot_inv[5]*hamil[21]-0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[5]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*apar[4]*b_z[5]*hamil[21]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[5]*hamil[21]-0.10825317547305482*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[21]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[4]*hamil[21]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[3]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[3]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[5]*apar[7]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[5]*apar[7]*hamil[12]-0.10825317547305482*b_z[1]*jacobtot_inv[3]*apar[7]*hamil[12]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[7]*hamil[12]-0.10825317547305482*b_z[1]*jacobtot_inv[5]*apar[6]*hamil[12]-0.10825317547305482*jacobtot_inv[1]*b_z[5]*apar[6]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[6]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[6]*hamil[12]-0.10825317547305482*apar[2]*b_z[5]*jacobtot_inv[5]*hamil[12]-0.10825317547305482*b_z[3]*apar[4]*jacobtot_inv[5]*hamil[12]-0.10825317547305482*jacobtot_inv[3]*apar[4]*b_z[5]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[4]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[12]-0.10825317547305482*apar[2]*b_z[3]*jacobtot_inv[3]*hamil[12]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[2]*hamil[12])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[6] = (((-(0.19485571585149863*jacobtot_inv[0]*b_x[5]*apar[7]*hamil[16])-0.19485571585149863*jacobtot_inv[1]*b_x[3]*apar[7]*hamil[16]-0.19485571585149863*jacobtot_inv[1]*b_x[5]*apar[6]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[6]*hamil[16]+0.19485571585149863*b_x[0]*jacobtot_inv[1]*apar[4]*hamil[16]+0.19485571585149863*jacobtot_inv[0]*b_x[1]*apar[4]*hamil[16]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[2]*hamil[16]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[2]*hamil[16]-0.19485571585149863*jacobtot_inv[1]*b_x[5]*apar[7]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[7]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_x[5]*apar[6]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[6]*hamil[8]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[4]*hamil[8]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[4]*hamil[8]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[2]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[2]*hamil[8]-0.38971143170299727*b_x[3]*jacobtot_inv[5]*hamil[6]*apar[7]-0.38971143170299727*jacobtot_inv[3]*b_x[5]*hamil[6]*apar[7]-0.19485571585149863*b_x[0]*jacobtot_inv[1]*hamil[6]*apar[7]-0.19485571585149863*jacobtot_inv[0]*b_x[1]*hamil[6]*apar[7]-0.38971143170299727*hamil[2]*b_x[5]*jacobtot_inv[5]*apar[7]-0.21650635094610965*hamil[2]*b_x[3]*jacobtot_inv[3]*apar[7]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*hamil[2]*apar[7]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[2]*apar[7]-0.38971143170299727*b_x[5]*jacobtot_inv[5]*apar[6]*hamil[6]-0.21650635094610965*b_x[3]*jacobtot_inv[3]*apar[6]*hamil[6]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[6]*hamil[6]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[6]*hamil[6]-0.19485571585149863*jacobtot_inv[0]*apar[4]*b_x[5]*hamil[6]-0.19485571585149863*jacobtot_inv[1]*apar[2]*b_x[5]*hamil[6]-0.19485571585149863*jacobtot_inv[1]*b_x[3]*apar[4]*hamil[6]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[6]-0.21650635094610965*hamil[2]*b_x[3]*jacobtot_inv[5]*apar[6]-0.21650635094610965*hamil[2]*jacobtot_inv[3]*b_x[5]*apar[6]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[2]*apar[6]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[2]*apar[6]-0.19485571585149863*jacobtot_inv[1]*hamil[2]*apar[4]*b_x[5]-0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[2]*b_x[5]-0.10825317547305482*jacobtot_inv[0]*hamil[2]*b_x[3]*apar[4]-0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[2]*b_x[3])*rdy2*rdz2)/vmap[1]+((-(0.19485571585149863*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[16])-0.19485571585149863*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[16]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[5]*hamil[16]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[5]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[16]+0.21650635094610965*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[16]-0.38971143170299727*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[16]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[16]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[16]-0.10825317547305482*apar[0]*b_y[5]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*b_y[0]*apar[5]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[5]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*apar[5]*b_y[5]*hamil[8]-0.21650635094610965*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[8]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[8]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[8]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[8]-0.19485571585149863*b_y[1]*jacobtot_inv[5]*apar[7]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[7]*hamil[7]+0.10825317547305482*b_y[0]*jacobtot_inv[5]*apar[6]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[7]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*apar[6]*hamil[7]-0.19485571585149863*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[7]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[5]*hamil[7]-0.38971143170299727*b_y[1]*jacobtot_inv[1]*apar[4]*hamil[7]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[4]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[7]+0.38971143170299727*hamil[1]*b_y[5]*jacobtot_inv[5]*apar[7]-0.10825317547305482*b_y[0]*hamil[3]*jacobtot_inv[5]*apar[7]-0.21650635094610965*jacobtot_inv[0]*hamil[3]*b_y[5]*apar[7]-0.21650635094610965*b_y[1]*hamil[3]*jacobtot_inv[3]*apar[7]+0.21650635094610965*hamil[1]*b_y[3]*jacobtot_inv[3]*apar[7]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*hamil[3]*apar[7]+0.19485571585149863*b_y[1]*hamil[1]*jacobtot_inv[1]*apar[7]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[1]*apar[7]+0.38971143170299727*apar[5]*b_y[5]*jacobtot_inv[5]*hamil[6]+0.21650635094610965*apar[3]*b_y[3]*jacobtot_inv[5]*hamil[6]+0.21650635094610965*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[6]+0.19485571585149863*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[5]*hamil[6]+0.21650635094610965*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[6]+0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[6]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[5]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[6]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[6]-0.10825317547305482*b_y[1]*hamil[3]*jacobtot_inv[5]*apar[6]+0.21650635094610965*hamil[1]*b_y[3]*jacobtot_inv[5]*apar[6]+0.21650635094610965*hamil[1]*jacobtot_inv[3]*b_y[5]*apar[6]-0.10825317547305482*jacobtot_inv[1]*hamil[3]*b_y[5]*apar[6]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[1]*apar[6]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[1]*apar[6]-0.10825317547305482*apar[2]*hamil[3]*b_y[5]*jacobtot_inv[5]-0.10825317547305482*b_y[3]*hamil[3]*apar[4]*jacobtot_inv[5]-0.21650635094610965*hamil[3]*jacobtot_inv[3]*apar[4]*b_y[5]+0.19485571585149863*hamil[1]*jacobtot_inv[1]*apar[4]*b_y[5]+0.10825317547305482*jacobtot_inv[0]*hamil[1]*apar[2]*b_y[5]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[3]*apar[4]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*hamil[3]*apar[4]+0.10825317547305482*jacobtot_inv[0]*hamil[1]*b_y[3]*apar[4]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[3]+0.10825317547305482*hamil[1]*jacobtot_inv[1]*apar[2]*b_y[3])*rdx2*rdz2)/vmap[1]+((0.35074028853269745*b_z[5]*jacobtot_inv[5]*apar[7]*hamil[16]+0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[7]*hamil[16]-0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[6]*hamil[16]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[6]*hamil[16]+0.19485571585149863*b_z[1]*apar[4]*jacobtot_inv[5]*hamil[16]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*jacobtot_inv[1]*apar[4]*b_z[5]*hamil[16]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[3]*hamil[16]+0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[7]*hamil[8]+0.38971143170299727*jacobtot_inv[3]*b_z[5]*apar[7]*hamil[8]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[7]*hamil[8]+0.21650635094610965*jacobtot_inv[0]*b_z[1]*apar[7]*hamil[8]+0.19485571585149863*b_z[5]*jacobtot_inv[5]*apar[6]*hamil[8]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[6]*hamil[8]+0.10825317547305482*b_z[0]*apar[4]*jacobtot_inv[5]*hamil[8]+0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[5]*hamil[8]+0.21650635094610965*jacobtot_inv[0]*apar[4]*b_z[5]*hamil[8]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[5]*hamil[8]+0.21650635094610965*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[8]+0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[4]*hamil[8]+0.19485571585149863*b_z[1]*jacobtot_inv[5]*hamil[6]*apar[7]+0.19485571585149863*jacobtot_inv[1]*b_z[5]*hamil[6]*apar[7]+0.10825317547305482*b_z[0]*hamil[2]*jacobtot_inv[5]*apar[7]+0.21650635094610965*jacobtot_inv[0]*hamil[2]*b_z[5]*apar[7]+0.21650635094610965*b_z[1]*hamil[2]*jacobtot_inv[3]*apar[7]+0.10825317547305482*jacobtot_inv[1]*hamil[2]*b_z[3]*apar[7]-0.10825317547305482*b_z[0]*jacobtot_inv[5]*apar[6]*hamil[6]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[6]*hamil[6]+0.19485571585149863*apar[4]*b_z[5]*jacobtot_inv[5]*hamil[6]-0.10825317547305482*apar[2]*b_z[3]*jacobtot_inv[5]*hamil[6]+0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[6]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[2]*hamil[6]+0.10825317547305482*b_z[1]*hamil[2]*jacobtot_inv[5]*apar[6]+0.10825317547305482*jacobtot_inv[1]*hamil[2]*b_z[5]*apar[6]+0.10825317547305482*apar[2]*hamil[2]*b_z[5]*jacobtot_inv[5]+0.10825317547305482*hamil[2]*b_z[3]*apar[4]*jacobtot_inv[5]+0.21650635094610965*hamil[2]*jacobtot_inv[3]*apar[4]*b_z[5]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*hamil[2]*apar[4]+0.21650635094610965*jacobtot_inv[0]*b_z[1]*hamil[2]*apar[4]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[2])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[7] = (((-(0.7014805770653949*apar[3]*b_x[5]*jacobtot_inv[5]*hamil[16])-0.7014805770653949*b_x[3]*apar[5]*jacobtot_inv[5]*hamil[16]-0.7014805770653949*jacobtot_inv[3]*apar[5]*b_x[5]*hamil[16]-0.19485571585149863*apar[0]*jacobtot_inv[1]*b_x[5]*hamil[16]-0.19485571585149863*jacobtot_inv[0]*apar[1]*b_x[5]*hamil[16]-0.19485571585149863*b_x[0]*jacobtot_inv[1]*apar[5]*hamil[16]-0.19485571585149863*jacobtot_inv[0]*b_x[1]*apar[5]*hamil[16]-0.38971143170299727*apar[3]*b_x[3]*jacobtot_inv[3]*hamil[16]-0.19485571585149863*apar[1]*jacobtot_inv[1]*b_x[3]*hamil[16]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_x[3]*hamil[16]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[3]*hamil[16]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[3]*hamil[16]-0.7014805770653949*apar[5]*b_x[5]*jacobtot_inv[5]*hamil[8]-0.38971143170299727*apar[3]*b_x[3]*jacobtot_inv[5]*hamil[8]-0.38971143170299727*apar[3]*jacobtot_inv[3]*b_x[5]*hamil[8]-0.19485571585149863*apar[1]*jacobtot_inv[1]*b_x[5]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_x[5]*hamil[8]-0.38971143170299727*b_x[3]*jacobtot_inv[3]*apar[5]*hamil[8]-0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[5]*hamil[8]-0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[5]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[1]*b_x[3]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_x[3]*hamil[8]-0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[3]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[3]*hamil[8]+0.35074028853269745*b_x[3]*jacobtot_inv[5]*apar[7]*hamil[7]+0.35074028853269745*jacobtot_inv[3]*b_x[5]*apar[7]*hamil[7]+0.19485571585149863*b_x[0]*jacobtot_inv[1]*apar[7]*hamil[7]+0.19485571585149863*jacobtot_inv[0]*b_x[1]*apar[7]*hamil[7]+0.35074028853269745*b_x[5]*jacobtot_inv[5]*apar[6]*hamil[7]+0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[6]*hamil[7]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[6]*hamil[7]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[6]*hamil[7]+0.19485571585149863*b_x[0]*apar[4]*jacobtot_inv[5]*hamil[7]+0.19485571585149863*b_x[1]*apar[2]*jacobtot_inv[5]*hamil[7]+0.19485571585149863*jacobtot_inv[0]*apar[4]*b_x[5]*hamil[7]+0.19485571585149863*jacobtot_inv[1]*apar[2]*b_x[5]*hamil[7]+0.19485571585149863*b_x[1]*jacobtot_inv[3]*apar[4]*hamil[7]+0.19485571585149863*jacobtot_inv[1]*b_x[3]*apar[4]*hamil[7]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[3]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[7]+0.35074028853269745*hamil[3]*b_x[5]*jacobtot_inv[5]*apar[7]+0.19485571585149863*b_x[3]*hamil[3]*jacobtot_inv[3]*apar[7]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*hamil[3]*apar[7]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*hamil[3]*apar[7]-0.19485571585149863*apar[0]*b_x[5]*jacobtot_inv[5]*hamil[6]-0.19485571585149863*b_x[0]*apar[5]*jacobtot_inv[5]*hamil[6]-0.19485571585149863*apar[1]*b_x[3]*jacobtot_inv[5]*hamil[6]-0.19485571585149863*b_x[1]*apar[3]*jacobtot_inv[5]*hamil[6]-0.38971143170299727*jacobtot_inv[0]*apar[5]*b_x[5]*hamil[6]-0.19485571585149863*apar[1]*jacobtot_inv[3]*b_x[5]*hamil[6]-0.38971143170299727*jacobtot_inv[1]*apar[3]*b_x[5]*hamil[6]-0.19485571585149863*b_x[1]*jacobtot_inv[3]*apar[5]*hamil[6]-0.38971143170299727*jacobtot_inv[1]*b_x[3]*apar[5]*hamil[6]-0.10825317547305482*apar[0]*b_x[3]*jacobtot_inv[3]*hamil[6]-0.10825317547305482*b_x[0]*apar[3]*jacobtot_inv[3]*hamil[6]-0.21650635094610965*jacobtot_inv[0]*apar[3]*b_x[3]*hamil[6]+0.19485571585149863*b_x[3]*hamil[3]*jacobtot_inv[5]*apar[6]+0.19485571585149863*hamil[3]*jacobtot_inv[3]*b_x[5]*apar[6]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*hamil[3]*apar[6]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*hamil[3]*apar[6]-0.19485571585149863*apar[1]*hamil[2]*b_x[5]*jacobtot_inv[5]-0.19485571585149863*b_x[1]*hamil[2]*apar[5]*jacobtot_inv[5]+0.19485571585149863*b_x[1]*hamil[3]*apar[4]*jacobtot_inv[5]+0.10825317547305482*b_x[0]*apar[2]*hamil[3]*jacobtot_inv[5]-0.10825317547305482*apar[0]*hamil[2]*b_x[3]*jacobtot_inv[5]-0.10825317547305482*b_x[0]*hamil[2]*apar[3]*jacobtot_inv[5]-0.38971143170299727*jacobtot_inv[1]*hamil[2]*apar[5]*b_x[5]+0.19485571585149863*jacobtot_inv[1]*hamil[3]*apar[4]*b_x[5]-0.10825317547305482*apar[0]*hamil[2]*jacobtot_inv[3]*b_x[5]+0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[3]*b_x[5]-0.21650635094610965*jacobtot_inv[0]*hamil[2]*apar[3]*b_x[5]-0.10825317547305482*b_x[0]*hamil[2]*jacobtot_inv[3]*apar[5]-0.21650635094610965*jacobtot_inv[0]*hamil[2]*b_x[3]*apar[5]+0.10825317547305482*b_x[0]*hamil[3]*jacobtot_inv[3]*apar[4]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*hamil[3]*apar[4]+0.10825317547305482*b_x[1]*apar[2]*hamil[3]*jacobtot_inv[3]-0.10825317547305482*apar[1]*hamil[2]*b_x[3]*jacobtot_inv[3]-0.10825317547305482*b_x[1]*hamil[2]*apar[3]*jacobtot_inv[3]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[3]-0.21650635094610965*jacobtot_inv[1]*hamil[2]*apar[3]*b_x[3])*rdy2*rdz2)/vmap[1]+((0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[7]*hamil[16]-0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[7]*hamil[16]+0.38971143170299727*b_y[3]*jacobtot_inv[5]*apar[6]*hamil[16]+0.19485571585149863*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[16]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[6]*hamil[16]-0.38971143170299727*b_y[1]*apar[4]*jacobtot_inv[5]*hamil[16]-0.19485571585149863*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[16]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[4]*hamil[16]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[16]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[16]-0.19485571585149863*b_y[3]*jacobtot_inv[5]*apar[7]*hamil[8]-0.38971143170299727*jacobtot_inv[3]*b_y[5]*apar[7]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[7]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[7]*hamil[8]-0.19485571585149863*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[8]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[6]*hamil[8]-0.10825317547305482*b_y[0]*apar[4]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[5]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[5]*hamil[8]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[4]*hamil[8]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[4]*hamil[8]+0.38971143170299727*apar[3]*b_y[3]*jacobtot_inv[5]*hamil[7]-0.38971143170299727*apar[1]*b_y[1]*jacobtot_inv[5]*hamil[7]+0.19485571585149863*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[7]-0.19485571585149863*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[7]+0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[7]-0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[7]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[7]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[7]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[7]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[7]+0.19485571585149863*b_y[1]*jacobtot_inv[5]*hamil[6]*apar[7]+0.38971143170299727*jacobtot_inv[1]*b_y[5]*hamil[6]*apar[7]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*hamil[6]*apar[7]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*hamil[6]*apar[7]+0.10825317547305482*b_y[0]*jacobtot_inv[5]*apar[6]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[6]+0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[6]*hamil[6]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*apar[6]*hamil[6]+0.19485571585149863*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*apar[2]*jacobtot_inv[3]*b_y[5]*hamil[6]+0.10825317547305482*b_y[3]*jacobtot_inv[3]*apar[4]*hamil[6]-0.19485571585149863*apar[3]*hamil[3]*b_y[5]*jacobtot_inv[5]+0.19485571585149863*apar[1]*hamil[1]*b_y[5]*jacobtot_inv[5]-0.19485571585149863*b_y[3]*hamil[3]*apar[5]*jacobtot_inv[5]+0.19485571585149863*b_y[1]*hamil[1]*apar[5]*jacobtot_inv[5]-0.10825317547305482*apar[0]*b_y[1]*hamil[3]*jacobtot_inv[5]-0.10825317547305482*b_y[0]*apar[1]*hamil[3]*jacobtot_inv[5]+0.10825317547305482*apar[0]*hamil[1]*b_y[3]*jacobtot_inv[5]+0.10825317547305482*b_y[0]*hamil[1]*apar[3]*jacobtot_inv[5]-0.38971143170299727*hamil[3]*jacobtot_inv[3]*apar[5]*b_y[5]+0.38971143170299727*hamil[1]*jacobtot_inv[1]*apar[5]*b_y[5]+0.10825317547305482*apar[0]*hamil[1]*jacobtot_inv[3]*b_y[5]-0.10825317547305482*apar[0]*jacobtot_inv[1]*hamil[3]*b_y[5]-0.21650635094610965*jacobtot_inv[0]*apar[1]*hamil[3]*b_y[5]+0.21650635094610965*jacobtot_inv[0]*hamil[1]*apar[3]*b_y[5]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[3]*apar[5]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[3]*apar[5]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*hamil[3]*apar[5]+0.21650635094610965*jacobtot_inv[0]*hamil[1]*b_y[3]*apar[5]-0.21650635094610965*apar[1]*b_y[1]*hamil[3]*jacobtot_inv[3]+0.10825317547305482*apar[1]*hamil[1]*b_y[3]*jacobtot_inv[3]+0.10825317547305482*b_y[1]*hamil[1]*apar[3]*jacobtot_inv[3]-0.10825317547305482*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[3]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[3]+0.21650635094610965*hamil[1]*jacobtot_inv[1]*apar[3]*b_y[3])*rdx2*rdz2)/vmap[1]+((0.7014805770653949*apar[1]*b_z[5]*jacobtot_inv[5]*hamil[16]+0.7014805770653949*b_z[1]*apar[5]*jacobtot_inv[5]*hamil[16]+0.7014805770653949*jacobtot_inv[1]*apar[5]*b_z[5]*hamil[16]+0.19485571585149863*apar[0]*jacobtot_inv[3]*b_z[5]*hamil[16]+0.19485571585149863*jacobtot_inv[0]*apar[3]*b_z[5]*hamil[16]+0.19485571585149863*b_z[0]*jacobtot_inv[3]*apar[5]*hamil[16]+0.19485571585149863*jacobtot_inv[0]*b_z[3]*apar[5]*hamil[16]+0.19485571585149863*apar[1]*b_z[3]*jacobtot_inv[3]*hamil[16]+0.19485571585149863*b_z[1]*apar[3]*jacobtot_inv[3]*hamil[16]+0.38971143170299727*apar[1]*b_z[1]*jacobtot_inv[1]*hamil[16]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_z[1]*hamil[16]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[1]*hamil[16]+0.19485571585149863*apar[0]*b_z[5]*jacobtot_inv[5]*hamil[8]+0.19485571585149863*b_z[0]*apar[5]*jacobtot_inv[5]*hamil[8]+0.19485571585149863*apar[1]*b_z[3]*jacobtot_inv[5]*hamil[8]+0.19485571585149863*b_z[1]*apar[3]*jacobtot_inv[5]*hamil[8]+0.38971143170299727*jacobtot_inv[0]*apar[5]*b_z[5]*hamil[8]+0.38971143170299727*apar[1]*jacobtot_inv[3]*b_z[5]*hamil[8]+0.19485571585149863*jacobtot_inv[1]*apar[3]*b_z[5]*hamil[8]+0.38971143170299727*b_z[1]*jacobtot_inv[3]*apar[5]*hamil[8]+0.19485571585149863*jacobtot_inv[1]*b_z[3]*apar[5]*hamil[8]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[1]*hamil[8]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[1]*hamil[8]+0.21650635094610965*jacobtot_inv[0]*apar[1]*b_z[1]*hamil[8]-0.35074028853269745*b_z[1]*jacobtot_inv[5]*apar[7]*hamil[7]-0.35074028853269745*jacobtot_inv[1]*b_z[5]*apar[7]*hamil[7]-0.19485571585149863*b_z[0]*jacobtot_inv[3]*apar[7]*hamil[7]-0.19485571585149863*jacobtot_inv[0]*b_z[3]*apar[7]*hamil[7]-0.19485571585149863*b_z[0]*jacobtot_inv[5]*apar[6]*hamil[7]-0.19485571585149863*jacobtot_inv[0]*b_z[5]*apar[6]*hamil[7]-0.19485571585149863*b_z[1]*jacobtot_inv[3]*apar[6]*hamil[7]-0.19485571585149863*jacobtot_inv[1]*b_z[3]*apar[6]*hamil[7]-0.35074028853269745*apar[4]*b_z[5]*jacobtot_inv[5]*hamil[7]-0.19485571585149863*apar[2]*b_z[3]*jacobtot_inv[5]*hamil[7]-0.19485571585149863*apar[2]*jacobtot_inv[3]*b_z[5]*hamil[7]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[4]*hamil[7]-0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[4]*hamil[7]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[2]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[7]-0.35074028853269745*hamil[1]*b_z[5]*jacobtot_inv[5]*apar[7]-0.19485571585149863*hamil[1]*b_z[3]*jacobtot_inv[3]*apar[7]-0.19485571585149863*b_z[1]*hamil[1]*jacobtot_inv[1]*apar[7]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[1]*apar[7]+0.7014805770653949*apar[5]*b_z[5]*jacobtot_inv[5]*hamil[6]+0.38971143170299727*apar[1]*b_z[1]*jacobtot_inv[5]*hamil[6]+0.19485571585149863*apar[3]*jacobtot_inv[3]*b_z[5]*hamil[6]+0.38971143170299727*apar[1]*jacobtot_inv[1]*b_z[5]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_z[5]*hamil[6]+0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[5]*hamil[6]+0.38971143170299727*b_z[1]*jacobtot_inv[1]*apar[5]*hamil[6]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[5]*hamil[6]+0.10825317547305482*apar[0]*b_z[1]*jacobtot_inv[3]*hamil[6]+0.10825317547305482*b_z[0]*apar[1]*jacobtot_inv[3]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_z[3]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[3]*hamil[6]-0.19485571585149863*hamil[1]*b_z[3]*jacobtot_inv[5]*apar[6]-0.19485571585149863*hamil[1]*jacobtot_inv[3]*b_z[5]*apar[6]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[1]*apar[6]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[1]*apar[6]+0.19485571585149863*hamil[2]*apar[3]*b_z[5]*jacobtot_inv[5]+0.19485571585149863*hamil[2]*b_z[3]*apar[5]*jacobtot_inv[5]-0.19485571585149863*b_z[1]*hamil[1]*apar[4]*jacobtot_inv[5]+0.10825317547305482*apar[0]*b_z[1]*hamil[2]*jacobtot_inv[5]+0.10825317547305482*b_z[0]*apar[1]*hamil[2]*jacobtot_inv[5]-0.10825317547305482*b_z[0]*hamil[1]*apar[2]*jacobtot_inv[5]+0.38971143170299727*hamil[2]*jacobtot_inv[3]*apar[5]*b_z[5]-0.19485571585149863*hamil[1]*jacobtot_inv[1]*apar[4]*b_z[5]+0.10825317547305482*apar[0]*jacobtot_inv[1]*hamil[2]*b_z[5]+0.21650635094610965*jacobtot_inv[0]*apar[1]*hamil[2]*b_z[5]-0.10825317547305482*jacobtot_inv[0]*hamil[1]*apar[2]*b_z[5]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*hamil[2]*apar[5]+0.21650635094610965*jacobtot_inv[0]*b_z[1]*hamil[2]*apar[5]-0.10825317547305482*b_z[0]*hamil[1]*jacobtot_inv[3]*apar[4]-0.10825317547305482*jacobtot_inv[0]*hamil[1]*b_z[3]*apar[4]+0.21650635094610965*apar[1]*b_z[1]*hamil[2]*jacobtot_inv[3]-0.10825317547305482*b_z[1]*hamil[1]*apar[2]*jacobtot_inv[3]+0.10825317547305482*apar[1]*jacobtot_inv[1]*hamil[2]*b_z[3]-0.10825317547305482*hamil[1]*jacobtot_inv[1]*apar[2]*b_z[3]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*hamil[2]*apar[3])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[8] = (((-(0.35074028853269745*b_x[5]*jacobtot_inv[5]*apar[7]*hamil[16])-0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[7]*hamil[16]-0.19485571585149863*b_x[3]*jacobtot_inv[5]*apar[6]*hamil[16]-0.19485571585149863*jacobtot_inv[3]*b_x[5]*apar[6]*hamil[16]+0.19485571585149863*b_x[1]*apar[4]*jacobtot_inv[5]*hamil[16]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[5]*hamil[16]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[4]*hamil[16]+0.10825317547305482*b_x[1]*apar[2]*jacobtot_inv[3]*hamil[16]-0.19485571585149863*b_x[3]*jacobtot_inv[5]*apar[7]*hamil[8]-0.19485571585149863*jacobtot_inv[3]*b_x[5]*apar[7]*hamil[8]-0.19485571585149863*b_x[5]*jacobtot_inv[5]*apar[6]*hamil[8]-0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[6]*hamil[8]+0.10825317547305482*b_x[0]*apar[4]*jacobtot_inv[5]*hamil[8]+0.10825317547305482*b_x[1]*apar[2]*jacobtot_inv[5]*hamil[8]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[4]*hamil[8]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[3]*hamil[8]-0.19485571585149863*b_x[1]*jacobtot_inv[5]*hamil[6]*apar[7]-0.38971143170299727*jacobtot_inv[1]*b_x[5]*hamil[6]*apar[7]-0.10825317547305482*b_x[0]*jacobtot_inv[3]*hamil[6]*apar[7]-0.21650635094610965*jacobtot_inv[0]*b_x[3]*hamil[6]*apar[7]-0.10825317547305482*b_x[0]*hamil[2]*jacobtot_inv[5]*apar[7]-0.21650635094610965*jacobtot_inv[0]*hamil[2]*b_x[5]*apar[7]-0.10825317547305482*b_x[1]*hamil[2]*jacobtot_inv[3]*apar[7]-0.21650635094610965*jacobtot_inv[1]*hamil[2]*b_x[3]*apar[7]-0.10825317547305482*b_x[0]*jacobtot_inv[5]*apar[6]*hamil[6]-0.21650635094610965*jacobtot_inv[0]*b_x[5]*apar[6]*hamil[6]-0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[6]*hamil[6]-0.21650635094610965*jacobtot_inv[1]*b_x[3]*apar[6]*hamil[6]-0.19485571585149863*apar[4]*b_x[5]*jacobtot_inv[5]*hamil[6]-0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[5]*hamil[6]-0.10825317547305482*apar[2]*jacobtot_inv[3]*b_x[5]*hamil[6]-0.10825317547305482*b_x[3]*jacobtot_inv[3]*apar[4]*hamil[6]-0.10825317547305482*b_x[1]*hamil[2]*jacobtot_inv[5]*apar[6]-0.21650635094610965*jacobtot_inv[1]*hamil[2]*b_x[5]*apar[6]-0.10825317547305482*b_x[0]*hamil[2]*jacobtot_inv[3]*apar[6]-0.21650635094610965*jacobtot_inv[0]*hamil[2]*b_x[3]*apar[6]-0.10825317547305482*apar[2]*hamil[2]*b_x[5]*jacobtot_inv[5]-0.10825317547305482*hamil[2]*b_x[3]*apar[4]*jacobtot_inv[5]-0.10825317547305482*hamil[2]*jacobtot_inv[3]*apar[4]*b_x[5]-0.10825317547305482*apar[2]*hamil[2]*b_x[3]*jacobtot_inv[3])*rdy2*rdz2)/vmap[1]+((0.19485571585149863*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[16]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[5]*hamil[16]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[5]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[16]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[16]+0.38971143170299727*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[16]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[16]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[16]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[16]-0.38971143170299727*apar[5]*b_y[5]*jacobtot_inv[5]*hamil[8]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[5]*hamil[8]-0.19485571585149863*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[8]-0.21650635094610965*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[5]*hamil[8]-0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[8]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[5]*hamil[8]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[8]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[8]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[8]+0.19485571585149863*b_y[3]*jacobtot_inv[5]*apar[7]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[7]*hamil[7]+0.19485571585149863*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[7]+0.38971143170299727*b_y[3]*jacobtot_inv[3]*apar[6]*hamil[7]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[6]*hamil[7]-0.10825317547305482*b_y[0]*apar[4]*jacobtot_inv[5]*hamil[7]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[5]*hamil[7]-0.10825317547305482*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[7]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[4]*hamil[7]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[7]-0.38971143170299727*hamil[3]*b_y[5]*jacobtot_inv[5]*apar[7]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[5]*apar[7]+0.21650635094610965*jacobtot_inv[0]*hamil[1]*b_y[5]*apar[7]-0.19485571585149863*b_y[3]*hamil[3]*jacobtot_inv[3]*apar[7]+0.10825317547305482*b_y[1]*hamil[1]*jacobtot_inv[3]*apar[7]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*hamil[3]*apar[7]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*hamil[3]*apar[7]+0.21650635094610965*hamil[1]*jacobtot_inv[1]*b_y[3]*apar[7]+0.10825317547305482*apar[0]*b_y[5]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*b_y[0]*apar[5]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[5]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*apar[5]*b_y[5]*hamil[6]+0.10825317547305482*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[6]+0.21650635094610965*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[6]+0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[6]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[6]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[6]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[6]+0.10825317547305482*b_y[1]*hamil[1]*jacobtot_inv[5]*apar[6]-0.19485571585149863*hamil[3]*jacobtot_inv[3]*b_y[5]*apar[6]+0.21650635094610965*hamil[1]*jacobtot_inv[1]*b_y[5]*apar[6]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[3]*apar[6]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*hamil[3]*apar[6]+0.21650635094610965*jacobtot_inv[0]*hamil[1]*b_y[3]*apar[6]+0.10825317547305482*hamil[1]*apar[2]*b_y[5]*jacobtot_inv[5]-0.21650635094610965*b_y[1]*hamil[3]*apar[4]*jacobtot_inv[5]+0.10825317547305482*hamil[1]*b_y[3]*apar[4]*jacobtot_inv[5]+0.10825317547305482*hamil[1]*jacobtot_inv[3]*apar[4]*b_y[5]-0.21650635094610965*jacobtot_inv[1]*hamil[3]*apar[4]*b_y[5]-0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[3]*b_y[5]-0.10825317547305482*b_y[0]*hamil[3]*jacobtot_inv[3]*apar[4]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*hamil[3]*apar[4]-0.10825317547305482*b_y[1]*apar[2]*hamil[3]*jacobtot_inv[3]+0.10825317547305482*hamil[1]*apar[2]*b_y[3]*jacobtot_inv[3])*rdx2*rdz2)/vmap[1]+((0.19485571585149863*jacobtot_inv[0]*b_z[5]*apar[7]*hamil[16]+0.19485571585149863*b_z[1]*jacobtot_inv[3]*apar[7]*hamil[16]-0.19485571585149863*b_z[0]*jacobtot_inv[3]*apar[6]*hamil[16]-0.19485571585149863*jacobtot_inv[0]*b_z[3]*apar[6]*hamil[16]+0.19485571585149863*jacobtot_inv[3]*apar[4]*b_z[5]*hamil[16]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[16]-0.19485571585149863*apar[2]*b_z[3]*jacobtot_inv[3]*hamil[16]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[2]*hamil[16]+0.38971143170299727*b_z[1]*jacobtot_inv[5]*apar[7]*hamil[8]+0.38971143170299727*jacobtot_inv[1]*b_z[5]*apar[7]*hamil[8]+0.19485571585149863*b_z[0]*jacobtot_inv[3]*apar[7]*hamil[8]+0.19485571585149863*jacobtot_inv[0]*b_z[3]*apar[7]*hamil[8]+0.19485571585149863*jacobtot_inv[0]*b_z[5]*apar[6]*hamil[8]+0.19485571585149863*b_z[1]*jacobtot_inv[3]*apar[6]*hamil[8]+0.38971143170299727*apar[4]*b_z[5]*jacobtot_inv[5]*hamil[8]+0.19485571585149863*apar[2]*jacobtot_inv[3]*b_z[5]*hamil[8]+0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[4]*hamil[8]+0.21650635094610965*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[8]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[4]*hamil[8]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[8]+0.19485571585149863*jacobtot_inv[3]*b_z[5]*hamil[6]*apar[7]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[6]*apar[7]+0.38971143170299727*hamil[2]*b_z[5]*jacobtot_inv[5]*apar[7]+0.19485571585149863*hamil[2]*b_z[3]*jacobtot_inv[3]*apar[7]+0.21650635094610965*b_z[1]*jacobtot_inv[1]*hamil[2]*apar[7]+0.10825317547305482*b_z[0]*jacobtot_inv[0]*hamil[2]*apar[7]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[6]*hamil[6]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[6]*hamil[6]+0.10825317547305482*jacobtot_inv[0]*apar[4]*b_z[5]*hamil[6]+0.10825317547305482*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[6]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[3]*hamil[6]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[3]*hamil[6]+0.19485571585149863*hamil[2]*jacobtot_inv[3]*b_z[5]*apar[6]+0.10825317547305482*jacobtot_inv[0]*b_z[1]*hamil[2]*apar[6]+0.21650635094610965*b_z[1]*hamil[2]*apar[4]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[1]*hamil[2]*apar[4]*b_z[5]+0.10825317547305482*jacobtot_inv[0]*apar[2]*hamil[2]*b_z[5]+0.10825317547305482*b_z[0]*hamil[2]*jacobtot_inv[3]*apar[4]+0.10825317547305482*jacobtot_inv[0]*hamil[2]*b_z[3]*apar[4]+0.10825317547305482*b_z[1]*apar[2]*hamil[2]*jacobtot_inv[3])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[12] = (((0.19485571585149863*b_x[0]*jacobtot_inv[5]*apar[7]*hamil[21]+0.19485571585149863*jacobtot_inv[0]*b_x[5]*apar[7]*hamil[21]+0.19485571585149863*b_x[1]*jacobtot_inv[3]*apar[7]*hamil[21]+0.19485571585149863*jacobtot_inv[1]*b_x[3]*apar[7]*hamil[21]+0.19485571585149863*b_x[1]*jacobtot_inv[5]*apar[6]*hamil[21]+0.19485571585149863*jacobtot_inv[1]*b_x[5]*apar[6]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[6]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[6]*hamil[21]+0.19485571585149863*apar[2]*b_x[5]*jacobtot_inv[5]*hamil[21]+0.19485571585149863*b_x[3]*apar[4]*jacobtot_inv[5]*hamil[21]+0.19485571585149863*jacobtot_inv[3]*apar[4]*b_x[5]*hamil[21]+0.19485571585149863*b_x[0]*jacobtot_inv[1]*apar[4]*hamil[21]+0.19485571585149863*jacobtot_inv[0]*b_x[1]*apar[4]*hamil[21]+0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[3]*hamil[21]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[2]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[2]*hamil[21]+0.19485571585149863*b_x[1]*jacobtot_inv[5]*apar[7]*hamil[14]+0.19485571585149863*jacobtot_inv[1]*b_x[5]*apar[7]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[7]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[7]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[5]*apar[6]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[5]*apar[6]*hamil[14]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[6]*hamil[14]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[6]*hamil[14]+0.19485571585149863*apar[4]*b_x[5]*jacobtot_inv[5]*hamil[14]+0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[5]*hamil[14]+0.10825317547305482*apar[2]*jacobtot_inv[3]*b_x[5]*hamil[14]+0.10825317547305482*b_x[3]*jacobtot_inv[3]*apar[4]*hamil[14]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[4]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[4]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[2]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[2]*hamil[14])*rdy2*rdz2)/vmap[1]+((-(0.19485571585149863*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[21])-0.19485571585149863*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[21]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[5]*hamil[21]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[5]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[21]+0.21650635094610965*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[21]-0.38971143170299727*apar[1]*b_y[1]*jacobtot_inv[1]*hamil[21]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[1]*hamil[21]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[1]*hamil[21]-0.10825317547305482*apar[0]*b_y[5]*jacobtot_inv[5]*hamil[14]-0.10825317547305482*b_y[0]*apar[5]*jacobtot_inv[5]*hamil[14]-0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[5]*hamil[14]-0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[5]*hamil[14]-0.21650635094610965*jacobtot_inv[0]*apar[5]*b_y[5]*hamil[14]-0.21650635094610965*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[14]-0.10825317547305482*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[14]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[14]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[14]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[1]*hamil[14]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[1]*hamil[14]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[1]*hamil[14]+0.38971143170299727*apar[5]*b_y[5]*jacobtot_inv[5]*hamil[12]+0.21650635094610965*apar[3]*b_y[3]*jacobtot_inv[5]*hamil[12]+0.21650635094610965*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[12]+0.19485571585149863*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[12]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[5]*hamil[12]+0.21650635094610965*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[12]+0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[5]*hamil[12]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.35074028853269745*b_z[5]*jacobtot_inv[5]*apar[7]*hamil[21])-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[7]*hamil[21]-0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[7]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[7]*hamil[21]-0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[6]*hamil[21]-0.19485571585149863*jacobtot_inv[3]*b_z[5]*apar[6]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[6]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[6]*hamil[21]-0.19485571585149863*b_z[1]*apar[4]*jacobtot_inv[5]*hamil[21]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[5]*hamil[21]-0.19485571585149863*jacobtot_inv[1]*apar[4]*b_z[5]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[5]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[4]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[4]*hamil[21]-0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[3]*hamil[21]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[3]*hamil[21]-0.19485571585149863*b_z[1]*jacobtot_inv[5]*apar[7]*hamil[12]-0.19485571585149863*jacobtot_inv[1]*b_z[5]*apar[7]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[7]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[7]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[5]*apar[6]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[5]*apar[6]*hamil[12]-0.10825317547305482*b_z[1]*jacobtot_inv[3]*apar[6]*hamil[12]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[6]*hamil[12]-0.19485571585149863*apar[4]*b_z[5]*jacobtot_inv[5]*hamil[12]-0.10825317547305482*apar[2]*b_z[3]*jacobtot_inv[5]*hamil[12]-0.10825317547305482*apar[2]*jacobtot_inv[3]*b_z[5]*hamil[12]-0.10825317547305482*b_z[3]*jacobtot_inv[3]*apar[4]*hamil[12]-0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[4]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[2]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[12])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[13] = ((-(0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[7]*hamil[21])+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[7]*hamil[21]+0.10825317547305482*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[21]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[6]*hamil[21]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*apar[6]*hamil[21]-0.10825317547305482*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[21]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[4]*hamil[21]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[4]*hamil[21]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[21]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[21]-0.21650635094610965*b_y[1]*jacobtot_inv[5]*apar[7]*hamil[14]-0.21650635094610965*jacobtot_inv[1]*b_y[5]*apar[7]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[7]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[7]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[14]-0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[6]*hamil[14]-0.21650635094610965*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[14]-0.10825317547305482*apar[2]*jacobtot_inv[3]*b_y[5]*hamil[14]-0.10825317547305482*b_y[3]*jacobtot_inv[3]*apar[4]*hamil[14]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*apar[4]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[4]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[14]+0.21650635094610965*b_y[3]*jacobtot_inv[5]*apar[7]*hamil[12]+0.21650635094610965*jacobtot_inv[3]*b_y[5]*apar[7]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[7]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[7]*hamil[12]+0.21650635094610965*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[12]+0.21650635094610965*b_y[3]*jacobtot_inv[3]*apar[6]*hamil[12]+0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[6]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[6]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[12]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[5]*hamil[12]+0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[4]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[12])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[14] = (((0.35074028853269745*b_x[5]*jacobtot_inv[5]*apar[7]*hamil[21]+0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[7]*hamil[21]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[7]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[7]*hamil[21]+0.19485571585149863*b_x[3]*jacobtot_inv[5]*apar[6]*hamil[21]+0.19485571585149863*jacobtot_inv[3]*b_x[5]*apar[6]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[6]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[6]*hamil[21]+0.19485571585149863*b_x[1]*apar[4]*jacobtot_inv[5]*hamil[21]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[5]*hamil[21]+0.19485571585149863*jacobtot_inv[1]*apar[4]*b_x[5]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[5]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[4]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[4]*hamil[21]+0.10825317547305482*b_x[1]*apar[2]*jacobtot_inv[3]*hamil[21]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[21]+0.19485571585149863*b_x[3]*jacobtot_inv[5]*apar[7]*hamil[14]+0.19485571585149863*jacobtot_inv[3]*b_x[5]*apar[7]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[7]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[7]*hamil[14]+0.19485571585149863*b_x[5]*jacobtot_inv[5]*apar[6]*hamil[14]+0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[6]*hamil[14]+0.10825317547305482*b_x[1]*jacobtot_inv[1]*apar[6]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[6]*hamil[14]+0.10825317547305482*b_x[0]*apar[4]*jacobtot_inv[5]*hamil[14]+0.10825317547305482*b_x[1]*apar[2]*jacobtot_inv[5]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*apar[4]*b_x[5]*hamil[14]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_x[5]*hamil[14]+0.10825317547305482*b_x[1]*jacobtot_inv[3]*apar[4]*hamil[14]+0.10825317547305482*jacobtot_inv[1]*b_x[3]*apar[4]*hamil[14]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[3]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[14])*rdy2*rdz2)/vmap[1]+((0.19485571585149863*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[21]+0.19485571585149863*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[21]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[5]*hamil[21]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[5]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[21]+0.38971143170299727*apar[3]*b_y[3]*jacobtot_inv[3]*hamil[21]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[21]+0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[3]*hamil[21]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[3]*hamil[21]-0.38971143170299727*apar[5]*b_y[5]*jacobtot_inv[5]*hamil[14]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[5]*hamil[14]-0.19485571585149863*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[14]-0.21650635094610965*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[14]-0.10825317547305482*apar[0]*jacobtot_inv[0]*b_y[5]*hamil[14]-0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[14]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[5]*hamil[14]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[14]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*apar[1]*b_y[3]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[3]*hamil[14]+0.10825317547305482*apar[0]*b_y[5]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*b_y[0]*apar[5]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[5]*hamil[12]+0.21650635094610965*jacobtot_inv[0]*apar[5]*b_y[5]*hamil[12]+0.10825317547305482*apar[1]*jacobtot_inv[3]*b_y[5]*hamil[12]+0.21650635094610965*jacobtot_inv[1]*apar[3]*b_y[5]*hamil[12]+0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[5]*hamil[12]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*apar[5]*hamil[12]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[3]*hamil[12]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[3]*hamil[12]+0.21650635094610965*jacobtot_inv[0]*apar[3]*b_y[3]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.19485571585149863*b_z[0]*jacobtot_inv[5]*apar[7]*hamil[21])-0.19485571585149863*jacobtot_inv[0]*b_z[5]*apar[7]*hamil[21]-0.19485571585149863*b_z[1]*jacobtot_inv[3]*apar[7]*hamil[21]-0.19485571585149863*jacobtot_inv[1]*b_z[3]*apar[7]*hamil[21]-0.19485571585149863*b_z[1]*jacobtot_inv[5]*apar[6]*hamil[21]-0.19485571585149863*jacobtot_inv[1]*b_z[5]*apar[6]*hamil[21]-0.19485571585149863*b_z[0]*jacobtot_inv[3]*apar[6]*hamil[21]-0.19485571585149863*jacobtot_inv[0]*b_z[3]*apar[6]*hamil[21]-0.19485571585149863*apar[2]*b_z[5]*jacobtot_inv[5]*hamil[21]-0.19485571585149863*b_z[3]*apar[4]*jacobtot_inv[5]*hamil[21]-0.19485571585149863*jacobtot_inv[3]*apar[4]*b_z[5]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[4]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[21]-0.19485571585149863*apar[2]*b_z[3]*jacobtot_inv[3]*hamil[21]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[2]*hamil[21]-0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[7]*hamil[12]-0.19485571585149863*jacobtot_inv[3]*b_z[5]*apar[7]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[7]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[7]*hamil[12]-0.19485571585149863*b_z[5]*jacobtot_inv[5]*apar[6]*hamil[12]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[6]*hamil[12]-0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[6]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[6]*hamil[12]-0.10825317547305482*b_z[0]*apar[4]*jacobtot_inv[5]*hamil[12]-0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[5]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*apar[4]*b_z[5]*hamil[12]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[5]*hamil[12]-0.10825317547305482*b_z[1]*jacobtot_inv[3]*apar[4]*hamil[12]-0.10825317547305482*jacobtot_inv[1]*b_z[3]*apar[4]*hamil[12]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[3]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[3]*hamil[12])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[16] = (((-(0.35074028853269745*b_x[3]*jacobtot_inv[5]*apar[7]*hamil[16])-0.35074028853269745*jacobtot_inv[3]*b_x[5]*apar[7]*hamil[16]-0.35074028853269745*b_x[5]*jacobtot_inv[5]*apar[6]*hamil[16]-0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[6]*hamil[16]+0.19485571585149863*b_x[0]*apar[4]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*b_x[1]*apar[2]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*b_x[1]*jacobtot_inv[3]*apar[4]*hamil[16]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[3]*hamil[16]-0.35074028853269745*b_x[5]*jacobtot_inv[5]*apar[7]*hamil[8]-0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[7]*hamil[8]-0.19485571585149863*b_x[3]*jacobtot_inv[5]*apar[6]*hamil[8]-0.19485571585149863*jacobtot_inv[3]*b_x[5]*apar[6]*hamil[8]+0.19485571585149863*b_x[1]*apar[4]*jacobtot_inv[5]*hamil[8]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[5]*hamil[8]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[4]*hamil[8]+0.10825317547305482*b_x[1]*apar[2]*jacobtot_inv[3]*hamil[8]-0.19485571585149863*b_x[0]*jacobtot_inv[5]*hamil[6]*apar[7]-0.38971143170299727*jacobtot_inv[0]*b_x[5]*hamil[6]*apar[7]-0.19485571585149863*b_x[1]*jacobtot_inv[3]*hamil[6]*apar[7]-0.38971143170299727*jacobtot_inv[1]*b_x[3]*hamil[6]*apar[7]-0.19485571585149863*b_x[1]*hamil[2]*jacobtot_inv[5]*apar[7]-0.38971143170299727*jacobtot_inv[1]*hamil[2]*b_x[5]*apar[7]-0.10825317547305482*b_x[0]*hamil[2]*jacobtot_inv[3]*apar[7]-0.21650635094610965*jacobtot_inv[0]*hamil[2]*b_x[3]*apar[7]-0.19485571585149863*b_x[1]*jacobtot_inv[5]*apar[6]*hamil[6]-0.38971143170299727*jacobtot_inv[1]*b_x[5]*apar[6]*hamil[6]-0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[6]*hamil[6]-0.21650635094610965*jacobtot_inv[0]*b_x[3]*apar[6]*hamil[6]-0.19485571585149863*apar[2]*b_x[5]*jacobtot_inv[5]*hamil[6]-0.19485571585149863*b_x[3]*apar[4]*jacobtot_inv[5]*hamil[6]-0.19485571585149863*jacobtot_inv[3]*apar[4]*b_x[5]*hamil[6]-0.10825317547305482*apar[2]*b_x[3]*jacobtot_inv[3]*hamil[6]-0.10825317547305482*b_x[0]*hamil[2]*jacobtot_inv[5]*apar[6]-0.21650635094610965*jacobtot_inv[0]*hamil[2]*b_x[5]*apar[6]-0.10825317547305482*b_x[1]*hamil[2]*jacobtot_inv[3]*apar[6]-0.21650635094610965*jacobtot_inv[1]*hamil[2]*b_x[3]*apar[6]-0.19485571585149863*hamil[2]*apar[4]*b_x[5]*jacobtot_inv[5]-0.10825317547305482*apar[2]*hamil[2]*b_x[3]*jacobtot_inv[5]-0.10825317547305482*apar[2]*hamil[2]*jacobtot_inv[3]*b_x[5]-0.10825317547305482*hamil[2]*b_x[3]*jacobtot_inv[3]*apar[4])*rdy2*rdz2)/vmap[1]+((0.38971143170299727*apar[3]*b_y[3]*jacobtot_inv[5]*hamil[16]-0.38971143170299727*apar[1]*b_y[1]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[16]-0.19485571585149863*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[16]+0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[16]-0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[16]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[16]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[16]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[16]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[16]-0.19485571585149863*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[8]-0.19485571585149863*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[5]*hamil[8]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[5]*hamil[8]-0.38971143170299727*jacobtot_inv[3]*apar[5]*b_y[5]*hamil[8]-0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[5]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[8]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[5]*hamil[8]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[8]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[8]-0.10825317547305482*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[8]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[8]+0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[7]*hamil[7]-0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[7]*hamil[7]+0.38971143170299727*b_y[3]*jacobtot_inv[5]*apar[6]*hamil[7]+0.19485571585149863*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[7]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[6]*hamil[7]-0.38971143170299727*b_y[1]*apar[4]*jacobtot_inv[5]*hamil[7]-0.19485571585149863*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[7]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[4]*hamil[7]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[7]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[7]-0.19485571585149863*b_y[3]*hamil[3]*jacobtot_inv[5]*apar[7]+0.19485571585149863*b_y[1]*hamil[1]*jacobtot_inv[5]*apar[7]-0.38971143170299727*hamil[3]*jacobtot_inv[3]*b_y[5]*apar[7]+0.38971143170299727*hamil[1]*jacobtot_inv[1]*b_y[5]*apar[7]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[3]*apar[7]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*hamil[3]*apar[7]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*hamil[3]*apar[7]+0.21650635094610965*jacobtot_inv[0]*hamil[1]*b_y[3]*apar[7]+0.19485571585149863*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[6]+0.19485571585149863*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[5]*hamil[6]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[5]*hamil[6]+0.38971143170299727*jacobtot_inv[1]*apar[5]*b_y[5]*hamil[6]+0.10825317547305482*apar[0]*jacobtot_inv[3]*b_y[5]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[6]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[5]*hamil[6]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[6]+0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[6]+0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[6]+0.21650635094610965*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[6]-0.19485571585149863*hamil[3]*b_y[5]*jacobtot_inv[5]*apar[6]+0.10825317547305482*b_y[0]*hamil[1]*jacobtot_inv[5]*apar[6]+0.21650635094610965*jacobtot_inv[0]*hamil[1]*b_y[5]*apar[6]+0.10825317547305482*b_y[1]*hamil[1]*jacobtot_inv[3]*apar[6]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*hamil[3]*apar[6]+0.21650635094610965*hamil[1]*jacobtot_inv[1]*b_y[3]*apar[6]+0.19485571585149863*hamil[1]*apar[4]*b_y[5]*jacobtot_inv[5]-0.10825317547305482*b_y[0]*hamil[3]*apar[4]*jacobtot_inv[5]-0.10825317547305482*b_y[1]*apar[2]*hamil[3]*jacobtot_inv[5]+0.10825317547305482*hamil[1]*apar[2]*b_y[3]*jacobtot_inv[5]-0.21650635094610965*jacobtot_inv[0]*hamil[3]*apar[4]*b_y[5]+0.10825317547305482*hamil[1]*apar[2]*jacobtot_inv[3]*b_y[5]-0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[3]*b_y[5]-0.21650635094610965*b_y[1]*hamil[3]*jacobtot_inv[3]*apar[4]+0.10825317547305482*hamil[1]*b_y[3]*jacobtot_inv[3]*apar[4]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*hamil[3]*apar[4])*rdx2*rdz2)/vmap[1]+((0.35074028853269745*b_z[1]*jacobtot_inv[5]*apar[7]*hamil[16]+0.35074028853269745*jacobtot_inv[1]*b_z[5]*apar[7]*hamil[16]-0.19485571585149863*b_z[0]*jacobtot_inv[5]*apar[6]*hamil[16]-0.19485571585149863*jacobtot_inv[1]*b_z[3]*apar[6]*hamil[16]+0.35074028853269745*apar[4]*b_z[5]*jacobtot_inv[5]*hamil[16]-0.19485571585149863*apar[2]*b_z[3]*jacobtot_inv[5]*hamil[16]+0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[16]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[2]*hamil[16]+0.19485571585149863*b_z[0]*jacobtot_inv[5]*apar[7]*hamil[8]+0.38971143170299727*jacobtot_inv[0]*b_z[5]*apar[7]*hamil[8]+0.38971143170299727*b_z[1]*jacobtot_inv[3]*apar[7]*hamil[8]+0.19485571585149863*jacobtot_inv[1]*b_z[3]*apar[7]*hamil[8]+0.19485571585149863*b_z[1]*jacobtot_inv[5]*apar[6]*hamil[8]+0.19485571585149863*jacobtot_inv[1]*b_z[5]*apar[6]*hamil[8]+0.19485571585149863*apar[2]*b_z[5]*jacobtot_inv[5]*hamil[8]+0.19485571585149863*b_z[3]*apar[4]*jacobtot_inv[5]*hamil[8]+0.38971143170299727*jacobtot_inv[3]*apar[4]*b_z[5]*hamil[8]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[4]*hamil[8]+0.21650635094610965*jacobtot_inv[0]*b_z[1]*apar[4]*hamil[8]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*apar[2]*hamil[8]+0.35074028853269745*b_z[5]*jacobtot_inv[5]*hamil[6]*apar[7]+0.19485571585149863*b_z[1]*jacobtot_inv[1]*hamil[6]*apar[7]+0.19485571585149863*hamil[2]*b_z[3]*jacobtot_inv[5]*apar[7]+0.38971143170299727*hamil[2]*jacobtot_inv[3]*b_z[5]*apar[7]+0.10825317547305482*b_z[0]*jacobtot_inv[1]*hamil[2]*apar[7]+0.21650635094610965*jacobtot_inv[0]*b_z[1]*hamil[2]*apar[7]-0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[6]*hamil[6]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[6]*hamil[6]+0.19485571585149863*b_z[1]*apar[4]*jacobtot_inv[5]*hamil[6]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[5]*hamil[6]+0.19485571585149863*jacobtot_inv[1]*apar[4]*b_z[5]*hamil[6]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[3]*hamil[6]+0.19485571585149863*hamil[2]*b_z[5]*jacobtot_inv[5]*apar[6]+0.10825317547305482*b_z[1]*jacobtot_inv[1]*hamil[2]*apar[6]+0.10825317547305482*b_z[0]*hamil[2]*apar[4]*jacobtot_inv[5]+0.10825317547305482*b_z[1]*apar[2]*hamil[2]*jacobtot_inv[5]+0.21650635094610965*jacobtot_inv[0]*hamil[2]*apar[4]*b_z[5]+0.10825317547305482*jacobtot_inv[1]*apar[2]*hamil[2]*b_z[5]+0.21650635094610965*b_z[1]*hamil[2]*jacobtot_inv[3]*apar[4]+0.10825317547305482*jacobtot_inv[1]*hamil[2]*b_z[3]*apar[4])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[20] = ((-(0.19485571585149863*b_y[1]*jacobtot_inv[5]*apar[7]*hamil[21])+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[7]*hamil[21]+0.10825317547305482*b_y[0]*jacobtot_inv[5]*apar[6]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[21]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*apar[6]*hamil[21]-0.19485571585149863*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[21]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[5]*hamil[21]-0.38971143170299727*b_y[1]*jacobtot_inv[1]*apar[4]*hamil[21]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[4]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[2]*hamil[21]-0.10825317547305482*b_y[0]*jacobtot_inv[5]*apar[7]*hamil[14]-0.21650635094610965*jacobtot_inv[0]*b_y[5]*apar[7]*hamil[14]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[7]*hamil[14]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[7]*hamil[14]-0.10825317547305482*b_y[1]*jacobtot_inv[5]*apar[6]*hamil[14]-0.10825317547305482*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[14]-0.10825317547305482*apar[2]*b_y[5]*jacobtot_inv[5]*hamil[14]-0.10825317547305482*b_y[3]*apar[4]*jacobtot_inv[5]*hamil[14]-0.21650635094610965*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[4]*hamil[14]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[4]*hamil[14]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[2]*hamil[14]+0.38971143170299727*b_y[5]*jacobtot_inv[5]*apar[7]*hamil[12]+0.21650635094610965*b_y[3]*jacobtot_inv[3]*apar[7]*hamil[12]+0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[7]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[7]*hamil[12]+0.21650635094610965*b_y[3]*jacobtot_inv[5]*apar[6]*hamil[12]+0.21650635094610965*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[6]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[6]*hamil[12]+0.19485571585149863*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[5]*hamil[12]+0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[4]*hamil[12]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[12])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[21] = (((0.35074028853269745*b_x[3]*jacobtot_inv[5]*apar[7]*hamil[21]+0.35074028853269745*jacobtot_inv[3]*b_x[5]*apar[7]*hamil[21]+0.19485571585149863*b_x[0]*jacobtot_inv[1]*apar[7]*hamil[21]+0.19485571585149863*jacobtot_inv[0]*b_x[1]*apar[7]*hamil[21]+0.35074028853269745*b_x[5]*jacobtot_inv[5]*apar[6]*hamil[21]+0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[6]*hamil[21]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[6]*hamil[21]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[6]*hamil[21]+0.19485571585149863*b_x[0]*apar[4]*jacobtot_inv[5]*hamil[21]+0.19485571585149863*b_x[1]*apar[2]*jacobtot_inv[5]*hamil[21]+0.19485571585149863*jacobtot_inv[0]*apar[4]*b_x[5]*hamil[21]+0.19485571585149863*jacobtot_inv[1]*apar[2]*b_x[5]*hamil[21]+0.19485571585149863*b_x[1]*jacobtot_inv[3]*apar[4]*hamil[21]+0.19485571585149863*jacobtot_inv[1]*b_x[3]*apar[4]*hamil[21]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[3]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[3]*hamil[21]+0.35074028853269745*b_x[5]*jacobtot_inv[5]*apar[7]*hamil[14]+0.19485571585149863*b_x[3]*jacobtot_inv[3]*apar[7]*hamil[14]+0.19485571585149863*b_x[1]*jacobtot_inv[1]*apar[7]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[0]*apar[7]*hamil[14]+0.19485571585149863*b_x[3]*jacobtot_inv[5]*apar[6]*hamil[14]+0.19485571585149863*jacobtot_inv[3]*b_x[5]*apar[6]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[1]*apar[6]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[1]*apar[6]*hamil[14]+0.19485571585149863*b_x[1]*apar[4]*jacobtot_inv[5]*hamil[14]+0.10825317547305482*b_x[0]*apar[2]*jacobtot_inv[5]*hamil[14]+0.19485571585149863*jacobtot_inv[1]*apar[4]*b_x[5]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_x[5]*hamil[14]+0.10825317547305482*b_x[0]*jacobtot_inv[3]*apar[4]*hamil[14]+0.10825317547305482*jacobtot_inv[0]*b_x[3]*apar[4]*hamil[14]+0.10825317547305482*b_x[1]*apar[2]*jacobtot_inv[3]*hamil[14]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_x[3]*hamil[14])*rdy2*rdz2)/vmap[1]+((0.38971143170299727*apar[3]*b_y[3]*jacobtot_inv[5]*hamil[21]-0.38971143170299727*apar[1]*b_y[1]*jacobtot_inv[5]*hamil[21]+0.19485571585149863*apar[3]*jacobtot_inv[3]*b_y[5]*hamil[21]-0.19485571585149863*apar[1]*jacobtot_inv[1]*b_y[5]*hamil[21]+0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[5]*hamil[21]-0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[5]*hamil[21]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[3]*hamil[21]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[3]*hamil[21]+0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[3]*hamil[21]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[3]*hamil[21]-0.19485571585149863*apar[3]*b_y[5]*jacobtot_inv[5]*hamil[14]-0.19485571585149863*b_y[3]*apar[5]*jacobtot_inv[5]*hamil[14]-0.10825317547305482*apar[0]*b_y[1]*jacobtot_inv[5]*hamil[14]-0.10825317547305482*b_y[0]*apar[1]*jacobtot_inv[5]*hamil[14]-0.38971143170299727*jacobtot_inv[3]*apar[5]*b_y[5]*hamil[14]-0.10825317547305482*apar[0]*jacobtot_inv[1]*b_y[5]*hamil[14]-0.21650635094610965*jacobtot_inv[0]*apar[1]*b_y[5]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[5]*hamil[14]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[5]*hamil[14]-0.21650635094610965*apar[1]*b_y[1]*jacobtot_inv[3]*hamil[14]-0.10825317547305482*apar[1]*jacobtot_inv[1]*b_y[3]*hamil[14]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[3]*hamil[14]+0.19485571585149863*apar[1]*b_y[5]*jacobtot_inv[5]*hamil[12]+0.19485571585149863*b_y[1]*apar[5]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*apar[0]*b_y[3]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*b_y[0]*apar[3]*jacobtot_inv[5]*hamil[12]+0.38971143170299727*jacobtot_inv[1]*apar[5]*b_y[5]*hamil[12]+0.10825317547305482*apar[0]*jacobtot_inv[3]*b_y[5]*hamil[12]+0.21650635094610965*jacobtot_inv[0]*apar[3]*b_y[5]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[5]*hamil[12]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*apar[5]*hamil[12]+0.10825317547305482*apar[1]*b_y[3]*jacobtot_inv[3]*hamil[12]+0.10825317547305482*b_y[1]*apar[3]*jacobtot_inv[3]*hamil[12]+0.21650635094610965*jacobtot_inv[1]*apar[3]*b_y[3]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.35074028853269745*b_z[1]*jacobtot_inv[5]*apar[7]*hamil[21])-0.35074028853269745*jacobtot_inv[1]*b_z[5]*apar[7]*hamil[21]-0.19485571585149863*b_z[0]*jacobtot_inv[3]*apar[7]*hamil[21]-0.19485571585149863*jacobtot_inv[0]*b_z[3]*apar[7]*hamil[21]-0.19485571585149863*b_z[0]*jacobtot_inv[5]*apar[6]*hamil[21]-0.19485571585149863*jacobtot_inv[0]*b_z[5]*apar[6]*hamil[21]-0.19485571585149863*b_z[1]*jacobtot_inv[3]*apar[6]*hamil[21]-0.19485571585149863*jacobtot_inv[1]*b_z[3]*apar[6]*hamil[21]-0.35074028853269745*apar[4]*b_z[5]*jacobtot_inv[5]*hamil[21]-0.19485571585149863*apar[2]*b_z[3]*jacobtot_inv[5]*hamil[21]-0.19485571585149863*apar[2]*jacobtot_inv[3]*b_z[5]*hamil[21]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[4]*hamil[21]-0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[4]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[4]*hamil[21]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[2]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[2]*hamil[21]-0.35074028853269745*b_z[5]*jacobtot_inv[5]*apar[7]*hamil[12]-0.19485571585149863*b_z[3]*jacobtot_inv[3]*apar[7]*hamil[12]-0.19485571585149863*b_z[1]*jacobtot_inv[1]*apar[7]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[0]*apar[7]*hamil[12]-0.19485571585149863*b_z[3]*jacobtot_inv[5]*apar[6]*hamil[12]-0.19485571585149863*jacobtot_inv[3]*b_z[5]*apar[6]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[1]*apar[6]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[1]*apar[6]*hamil[12]-0.19485571585149863*b_z[1]*apar[4]*jacobtot_inv[5]*hamil[12]-0.10825317547305482*b_z[0]*apar[2]*jacobtot_inv[5]*hamil[12]-0.19485571585149863*jacobtot_inv[1]*apar[4]*b_z[5]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_z[5]*hamil[12]-0.10825317547305482*b_z[0]*jacobtot_inv[3]*apar[4]*hamil[12]-0.10825317547305482*jacobtot_inv[0]*b_z[3]*apar[4]*hamil[12]-0.10825317547305482*b_z[1]*apar[2]*jacobtot_inv[3]*hamil[12]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_z[3]*hamil[12])*rdx2*rdy2)/vmap[1])/m_; + alphavpar[22] = ((0.19485571585149863*b_y[3]*jacobtot_inv[5]*apar[7]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[7]*hamil[21]+0.19485571585149863*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[21]+0.38971143170299727*b_y[3]*jacobtot_inv[3]*apar[6]*hamil[21]+0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[6]*hamil[21]-0.10825317547305482*b_y[0]*apar[4]*jacobtot_inv[5]*hamil[21]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[5]*hamil[21]-0.10825317547305482*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[21]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[4]*hamil[21]+0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[3]*hamil[21]-0.38971143170299727*b_y[5]*jacobtot_inv[5]*apar[7]*hamil[14]-0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[7]*hamil[14]-0.21650635094610965*b_y[1]*jacobtot_inv[1]*apar[7]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[0]*apar[7]*hamil[14]-0.19485571585149863*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*b_y[1]*apar[6]*hamil[14]-0.21650635094610965*b_y[1]*apar[4]*jacobtot_inv[5]*hamil[14]-0.21650635094610965*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*apar[2]*b_y[5]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[4]*hamil[14]-0.10825317547305482*jacobtot_inv[0]*b_y[3]*apar[4]*hamil[14]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[14]+0.10825317547305482*b_y[0]*jacobtot_inv[5]*apar[7]*hamil[12]+0.21650635094610965*jacobtot_inv[0]*b_y[5]*apar[7]*hamil[12]+0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[7]*hamil[12]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*apar[7]*hamil[12]+0.10825317547305482*b_y[1]*jacobtot_inv[5]*apar[6]*hamil[12]+0.21650635094610965*jacobtot_inv[1]*b_y[5]*apar[6]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[6]*hamil[12]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*apar[6]*hamil[12]+0.10825317547305482*apar[2]*b_y[5]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*b_y[3]*apar[4]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*jacobtot_inv[3]*apar[4]*b_y[5]*hamil[12]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[3]*hamil[12])*rdx2*rdz2)/(vmap[1]*m_); + alphavpar[27] = ((0.19485571585149863*b_y[3]*jacobtot_inv[3]*apar[7]*hamil[21]-0.19485571585149863*b_y[1]*jacobtot_inv[1]*apar[7]*hamil[21]+0.38971143170299727*b_y[3]*jacobtot_inv[5]*apar[6]*hamil[21]+0.19485571585149863*jacobtot_inv[3]*b_y[5]*apar[6]*hamil[21]+0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[6]*hamil[21]-0.38971143170299727*b_y[1]*apar[4]*jacobtot_inv[5]*hamil[21]-0.19485571585149863*jacobtot_inv[1]*apar[4]*b_y[5]*hamil[21]-0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[4]*hamil[21]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[3]*hamil[21]+0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[3]*hamil[21]-0.19485571585149863*b_y[3]*jacobtot_inv[5]*apar[7]*hamil[14]-0.38971143170299727*jacobtot_inv[3]*b_y[5]*apar[7]*hamil[14]-0.10825317547305482*b_y[0]*jacobtot_inv[1]*apar[7]*hamil[14]-0.21650635094610965*jacobtot_inv[0]*b_y[1]*apar[7]*hamil[14]-0.19485571585149863*b_y[5]*jacobtot_inv[5]*apar[6]*hamil[14]-0.10825317547305482*b_y[1]*jacobtot_inv[1]*apar[6]*hamil[14]-0.10825317547305482*b_y[0]*apar[4]*jacobtot_inv[5]*hamil[14]-0.10825317547305482*b_y[1]*apar[2]*jacobtot_inv[5]*hamil[14]-0.21650635094610965*jacobtot_inv[0]*apar[4]*b_y[5]*hamil[14]-0.10825317547305482*jacobtot_inv[1]*apar[2]*b_y[5]*hamil[14]-0.21650635094610965*b_y[1]*jacobtot_inv[3]*apar[4]*hamil[14]-0.10825317547305482*jacobtot_inv[1]*b_y[3]*apar[4]*hamil[14]+0.19485571585149863*b_y[1]*jacobtot_inv[5]*apar[7]*hamil[12]+0.38971143170299727*jacobtot_inv[1]*b_y[5]*apar[7]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[3]*apar[7]*hamil[12]+0.21650635094610965*jacobtot_inv[0]*b_y[3]*apar[7]*hamil[12]+0.10825317547305482*b_y[0]*jacobtot_inv[5]*apar[6]*hamil[12]+0.21650635094610965*jacobtot_inv[0]*b_y[5]*apar[6]*hamil[12]+0.10825317547305482*b_y[1]*jacobtot_inv[3]*apar[6]*hamil[12]+0.21650635094610965*jacobtot_inv[1]*b_y[3]*apar[6]*hamil[12]+0.19485571585149863*apar[4]*b_y[5]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*apar[2]*b_y[3]*jacobtot_inv[5]*hamil[12]+0.10825317547305482*apar[2]*jacobtot_inv[3]*b_y[5]*hamil[12]+0.10825317547305482*b_y[3]*jacobtot_inv[3]*apar[4]*hamil[12])*rdx2*rdz2)/(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/gkyl_dg_gyrokinetic_kernels.h b/gyrokinetic/ker/dg_gyrokinetic/gkyl_dg_gyrokinetic_kernels.h index 61117ef1c3..e8225e1740 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 *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 *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 *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 *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..d238da4c5a 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..8b28a452a8 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..92e198ca2b 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..88ca99e273 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..9bd473b754 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..0b8ed9317d 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..498a277666 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..9839938bde 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..59741c6716 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..4d2caaa586 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..654ae35df3 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..d6718fe837 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..5d062b6954 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..e0bf10f4f3 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..3e0e9a58ee 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..57462146c1 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..6cf635577b 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..1abad940db 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..f850648838 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..13cc478df5 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..988d136907 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..6184d536a3 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..a2da499294 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..4ca93d910c 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..43d4ce97f4 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..403e5afe85 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..55a1af88c1 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..a71b45ec40 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..a9079ef2ed 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..6646198205 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..6284a429d7 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..944529819a 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..b45acf2030 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..1be9740d4c 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..b2df2b4cc8 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..9ccf675e30 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..66d2f9ee5c 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 @@ -4,7 +4,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( 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, + const double *bmag, const double *phi, const double *apar, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +17,7 @@ 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. // 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). @@ -57,7 +58,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -83,7 +83,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -109,7 +108,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -135,7 +133,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -154,6 +151,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..6213e03896 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 @@ -4,7 +4,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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, + const double *bmag, const double *phi, const double *apar, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +17,7 @@ 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. // 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). @@ -62,7 +63,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -88,7 +88,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -114,7 +113,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -140,7 +138,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -166,7 +163,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -192,7 +188,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -218,7 +213,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -244,7 +238,6 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( 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 ; cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -263,6 +256,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..c6fa855f0b 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..8e0df1984a 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..a602b33749 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..8907a70957 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..a7d42b1e38 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surf_return_zero.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surf_return_zero.c new file mode 100644 index 0000000000..95196d3239 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surf_return_zero.c @@ -0,0 +1,11 @@ +#include +GKYL_CU_DH double gk_collisionless_flux_surf_return_zero( + 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 *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..c89bcda5a4 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 @@ -4,7 +4,7 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( 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, + const double *bmag, const double *phi, const double *apar, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +17,7 @@ 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. // 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). @@ -50,7 +51,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( dualcurlbhat_quad[1] = gkdgv[0].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[0].dualcurlbhat.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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -67,7 +67,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( dualcurlbhat_quad[1] = gkdgv[1].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[1].dualcurlbhat.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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -77,6 +76,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..923cd51270 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 @@ -4,7 +4,7 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( 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, + const double *bmag, const double *phi, const double *apar, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +17,7 @@ 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. // 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). @@ -52,7 +53,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( dualcurlbhat_quad[1] = gkdgv[0].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[0].dualcurlbhat.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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -78,7 +78,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( dualcurlbhat_quad[1] = gkdgv[1].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[1].dualcurlbhat.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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -97,6 +96,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..4d2b3e7f85 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 @@ -4,7 +4,7 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( 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, + const double *bmag, const double *phi, const double *apar, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +17,7 @@ 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. // 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). @@ -57,7 +58,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -83,7 +83,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -109,7 +108,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -135,7 +133,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -154,6 +151,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..140ef97c8f 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 @@ -4,7 +4,7 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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, + const double *bmag, const double *phi, const double *apar, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +17,7 @@ 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. // 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). @@ -62,7 +63,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -88,7 +88,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -114,7 +113,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -140,7 +138,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -166,7 +163,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -192,7 +188,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -218,7 +213,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -244,7 +238,6 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( 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]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; @@ -263,6 +256,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_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x1v_ser_p1.c index 0ef83c4598..8351564ace 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..afb03ca1e1 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..46e83b07d7 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..1e92b3a798 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..c176ec2db1 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..5c178c9917 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). 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..9a58c63c81 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 *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,7 @@ 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. // 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). diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_1x1v_ser_p1.c new file mode 100644 index 0000000000..12e52528d6 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_1x1v_ser_p1.c @@ -0,0 +1,65 @@ +#include +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: parallel component of vector potential (here it will be apardot). + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + + double *flux_surf_nodal = &flux_surf[3]; + double cfl = 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; + + + + alpha_quad = -q_/m_*(0.7071067811865475*apar[0]-0.7071067811865475*apar[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]; + JfR_quad = (-(1.1180339887498951*JfR[5])+1.118033988749895*JfR[4]+0.8660254037844386*JfR[3]-0.8660254037844386*JfR[2]-0.5*JfR[1]+0.5*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[0] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(0.7071067811865475*apar[1]+0.7071067811865475*apar[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]; + JfR_quad = (1.1180339887498951*JfR[5]+1.118033988749895*JfR[4]-0.8660254037844386*JfR[3]-0.8660254037844386*JfR[2]+0.5*JfR[1]+0.5*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_add_apardot_surfvpar_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_1x2v_ser_p1.c new file mode 100644 index 0000000000..e9c19092a9 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_1x2v_ser_p1.c @@ -0,0 +1,83 @@ +#include +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: parallel component of vector potential (here it will be apardot). + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + + double *flux_surf_nodal = &flux_surf[6]; + double cfl = 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; + + + + alpha_quad = -q_/m_*(0.7071067811865475*apar[0]-0.7071067811865475*apar[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]; + JfR_quad = (0.7905694150420947*JfR[11]-0.7905694150420948*JfR[10]-0.7905694150420948*JfR[9]+0.7905694150420947*JfR[8]-0.6123724356957944*JfR[7]+0.6123724356957944*JfR[6]+0.3535533905932737*JfR[5]+0.6123724356957944*JfR[4]-0.3535533905932737*JfR[3]-0.6123724356957944*JfR[2]-0.3535533905932737*JfR[1]+0.3535533905932737*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[0] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(0.7071067811865475*apar[0]-0.7071067811865475*apar[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]; + JfR_quad = (-(0.7905694150420947*JfR[11])+0.7905694150420948*JfR[10]-0.7905694150420948*JfR[9]+0.7905694150420947*JfR[8]+0.6123724356957944*JfR[7]-0.6123724356957944*JfR[6]-0.3535533905932737*JfR[5]+0.6123724356957944*JfR[4]+0.3535533905932737*JfR[3]-0.6123724356957944*JfR[2]-0.3535533905932737*JfR[1]+0.3535533905932737*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[1] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(0.7071067811865475*apar[1]+0.7071067811865475*apar[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]; + JfR_quad = (-(0.7905694150420947*JfR[11])-0.7905694150420948*JfR[10]+0.7905694150420948*JfR[9]+0.7905694150420947*JfR[8]+0.6123724356957944*JfR[7]+0.6123724356957944*JfR[6]-0.3535533905932737*JfR[5]-0.6123724356957944*JfR[4]-0.3535533905932737*JfR[3]-0.6123724356957944*JfR[2]+0.3535533905932737*JfR[1]+0.3535533905932737*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[2] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(0.7071067811865475*apar[1]+0.7071067811865475*apar[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]; + JfR_quad = (0.7905694150420947*JfR[11]+0.7905694150420948*JfR[10]+0.7905694150420948*JfR[9]+0.7905694150420947*JfR[8]-0.6123724356957944*JfR[7]-0.6123724356957944*JfR[6]+0.3535533905932737*JfR[5]-0.6123724356957944*JfR[4]+0.3535533905932737*JfR[3]-0.6123724356957944*JfR[2]+0.3535533905932737*JfR[1]+0.3535533905932737*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_add_apardot_surfvpar_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_2x2v_ser_p1.c new file mode 100644 index 0000000000..cc5236dc31 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_2x2v_ser_p1.c @@ -0,0 +1,124 @@ +#include +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: parallel component of vector potential (here it will be apardot). + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + + double *flux_surf_nodal = &flux_surf[24]; + double cfl = 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; + + + + alpha_quad = -q_/m_*(0.5*apar[3]-0.5*apar[2]-0.5*apar[1]+0.5*apar[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]; + JfR_quad = (-(0.5590169943749476*JfR[23])+0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]-0.25*JfR[12]-0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]+0.25*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]+0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[0] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(0.5*apar[3]-0.5*apar[2]-0.5*apar[1]+0.5*apar[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]; + JfR_quad = (0.5590169943749476*JfR[23]-0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]+0.25*JfR[12]-0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]-0.25*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]+0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[1] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(-(0.5*apar[3])+0.5*apar[2]-0.5*apar[1]+0.5*apar[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]; + JfR_quad = (0.5590169943749476*JfR[23]-0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]+0.25*JfR[12]+0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]-0.25*JfR[9]+0.25*JfR[8]-0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]-0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[2] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(-(0.5*apar[3])+0.5*apar[2]-0.5*apar[1]+0.5*apar[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]; + JfR_quad = (-(0.5590169943749476*JfR[23])+0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]-0.25*JfR[12]+0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]+0.25*JfR[9]-0.25*JfR[8]-0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]-0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[3] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(-(0.5*apar[3])-0.5*apar[2]+0.5*apar[1]+0.5*apar[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]; + JfR_quad = (0.5590169943749476*JfR[23]+0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]+0.25*JfR[12]+0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]+0.25*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]-0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[4] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(-(0.5*apar[3])-0.5*apar[2]+0.5*apar[1]+0.5*apar[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]; + JfR_quad = (-(0.5590169943749476*JfR[23])-0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]-0.25*JfR[12]+0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]-0.25*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]-0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[5] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(0.5*apar[3]+0.5*apar[2]+0.5*apar[1]+0.5*apar[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]; + JfR_quad = (-(0.5590169943749476*JfR[23])-0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]-0.25*JfR[12]-0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]-0.25*JfR[9]-0.25*JfR[8]-0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]+0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[6] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(0.5*apar[3]+0.5*apar[2]+0.5*apar[1]+0.5*apar[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]; + JfR_quad = (0.5590169943749476*JfR[23]+0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]+0.25*JfR[12]-0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]+0.25*JfR[9]+0.25*JfR[8]-0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]+0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_add_apardot_surfvpar_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_3x2v_ser_p1.c new file mode 100644 index 0000000000..57d3645f56 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_add_apardot_surfvpar_3x2v_ser_p1.c @@ -0,0 +1,205 @@ +#include +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: parallel component of vector potential (here it will be apardot). + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 *flux_surf_nodal = &flux_surf[72]; + double cfl = 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; + + + + alpha_quad = -q_/m_*(-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[0] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[1] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(0.3535533905932737*apar[7]-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[2] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(0.3535533905932737*apar[7]-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[3] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(0.3535533905932737*apar[7]-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[4] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(0.3535533905932737*apar[7]-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[5] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[6] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[7] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(0.3535533905932737*apar[7]+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[8] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(0.3535533905932737*apar[7]+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[9] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[10] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[11] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[12] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[13] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + + + alpha_quad = -q_/m_*(0.3535533905932737*apar[7]+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[14] += alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + alpha_quad = -q_/m_*(0.3535533905932737*apar[7]+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_edge_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_1x1v_ser_p1.c new file mode 100644 index 0000000000..90a6185dbe --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_1x1v_ser_p1.c @@ -0,0 +1,97 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + double hamil[6] = {0.}; + hamil[0] = (1.7320508075688772*phi[1]+phi[0])*q_+0.5*vmapSq[0]*m_; + hamil[1] = 0.5*vmapSq[1]*m_; + hamil[2] = 0.5*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.7745966692414834*JfR[5])+0.4472135954999579*JfR[4]+1.1618950038622249*JfR[3]-0.6708203932499369*JfR[2]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.9682458365518543*JfR[5]-0.5590169943749475*JfR[4]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.7745966692414834*JfR[5])+0.4472135954999579*JfR[4]-1.1618950038622249*JfR[3]+0.6708203932499369*JfR[2]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_1x2v_ser_p1.c new file mode 100644 index 0000000000..abb643af57 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_1x2v_ser_p1.c @@ -0,0 +1,125 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + double hamil[12] = {0.}; + hamil[0] = (2.4494897427831783*phi[1]+1.4142135623730951*phi[0])*q_+0.7071067811865475*vmapSq[0]*m_+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = 0.7071067811865475*vmapSq[1]*m_; + hamil[2] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[4] = 0.7071067811865475*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.5477225575051661*JfR[11]-0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]-0.8215838362577489*JfR[7]+0.4743416490252568*JfR[6]+0.6123724356957944*JfR[5]+0.8215838362577489*JfR[4]-0.3535533905932737*JfR[3]-0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.6846531968814573*JfR[11])+0.39528470752104733*JfR[10]+0.6846531968814574*JfR[9]-0.3952847075210473*JfR[8]+0.6123724356957944*JfR[5]-0.3535533905932737*JfR[3]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.5477225575051661*JfR[11]-0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]+0.8215838362577489*JfR[7]-0.4743416490252568*JfR[6]+0.6123724356957944*JfR[5]-0.8215838362577489*JfR[4]-0.3535533905932737*JfR[3]+0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.5477225575051661*JfR[11])+0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]+0.8215838362577489*JfR[7]-0.4743416490252568*JfR[6]-0.6123724356957944*JfR[5]+0.8215838362577489*JfR[4]+0.3535533905932737*JfR[3]-0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.6846531968814573*JfR[11]-0.39528470752104733*JfR[10]+0.6846531968814574*JfR[9]-0.3952847075210473*JfR[8]-0.6123724356957944*JfR[5]+0.3535533905932737*JfR[3]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.5477225575051661*JfR[11])+0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]-0.8215838362577489*JfR[7]+0.4743416490252568*JfR[6]-0.6123724356957944*JfR[5]-0.8215838362577489*JfR[4]+0.3535533905932737*JfR[3]+0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_2x2v_ser_p1.c new file mode 100644 index 0000000000..d481398725 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_2x2v_ser_p1.c @@ -0,0 +1,216 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (2.4494897427831783*phi[1]+1.4142135623730951*phi[0])*q_+vmapSq[0]*m_+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[3]+1.4142135623730951*phi[2])*q_+vmap[2]*(1.7320508075688772*bmag[3]+bmag[2]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[5] = (1.7320508075688772*bmag[3]+bmag[2])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]-0.4841229182759271*(JfR[21]+JfR[20])+0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]+0.4330127018922193*(JfR[8]+JfR[5])-0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]+0.4841229182759271*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]-0.4841229182759271*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]-0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]+0.4841229182759271*(JfR[21]+JfR[20])-0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]-0.4330127018922193*(JfR[8]+JfR[5])+0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_3x2v_ser_p1.c new file mode 100644 index 0000000000..74dab01d37 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfx_3x2v_ser_p1.c @@ -0,0 +1,371 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[1]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[4]+1.4142135623730951*phi[2])*q_; + hamil[2] = (2.4494897427831783*phi[5]+1.4142135623730951*phi[3])*q_+vmap[2]*(1.7320508075688772*bmag[5]+bmag[3]); + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[6])*q_; + hamil[9] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[3]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*JfR[36]+0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*JfR[36]-0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfy_2x2v_ser_p1.c new file mode 100644 index 0000000000..3fcfb15e9a --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfy_2x2v_ser_p1.c @@ -0,0 +1,216 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (2.4494897427831783*phi[2]+1.4142135623730951*phi[0])*q_+vmapSq[0]*m_+(1.7320508075688772*bmag[2]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[3]+1.4142135623730951*phi[1])*q_+vmap[2]*(1.7320508075688772*bmag[3]+bmag[1]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (1.7320508075688772*bmag[2]+bmag[0])*vmap[3]; + hamil[5] = (1.7320508075688772*bmag[3]+bmag[1])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[12]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.4841229182759271*JfR[22]-0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.4841229182759271*JfR[22]+0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.4841229182759271*(JfR[23]+JfR[22]))+0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*(JfR[12]+JfR[9])-0.25*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.4841229182759271*(JfR[23]+JfR[22])-0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*(JfR[12]+JfR[9])+0.25*JfR[8]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfy_3x2v_ser_p1.c new file mode 100644 index 0000000000..b53afc39d6 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfy_3x2v_ser_p1.c @@ -0,0 +1,373 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[2]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+bmag[0]*vmap[2]; + hamil[1] = (2.4494897427831783*phi[4]+1.4142135623730951*phi[1])*q_+bmag[1]*vmap[2]; + hamil[2] = (2.4494897427831783*phi[6]+1.4142135623730951*phi[3])*q_+vmap[2]*bmag[3]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = bmag[0]*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[5])*q_+vmap[2]*bmag[5]; + hamil[8] = bmag[1]*vmap[3]; + hamil[9] = bmag[3]*vmap[3]; + hamil[12] = vmap[3]*bmag[5]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[24]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdy2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfz_3x2v_ser_p1.c new file mode 100644 index 0000000000..cfa071a002 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_edge_surfz_3x2v_ser_p1.c @@ -0,0 +1,371 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[3]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+vmap[2]*(1.7320508075688772*bmag[3]+bmag[0]); + hamil[1] = (2.4494897427831783*phi[5]+1.4142135623730951*phi[1])*q_+vmap[2]*(1.7320508075688772*bmag[5]+bmag[1]); + hamil[2] = (2.4494897427831783*phi[6]+1.4142135623730951*phi[2])*q_; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (1.7320508075688772*bmag[3]+bmag[0])*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[4])*q_; + hamil[8] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[1]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[48]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1.c new file mode 100644 index 0000000000..86bf858c8b --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1.c @@ -0,0 +1,99 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + double hamil[6] = {0.}; + hamil[0] = (1.7320508075688772*phi[1]+phi[0])*q_+0.5*vmapSq[0]*m_; + hamil[1] = 0.5*vmapSq[1]*m_; + hamil[2] = 0.5*vmapSq[2]*m_; + + double JRatfR[3] = {0.}; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1.c new file mode 100644 index 0000000000..9178775b0d --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1.c @@ -0,0 +1,127 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + double hamil[12] = {0.}; + hamil[0] = (2.4494897427831783*phi[1]+1.4142135623730951*phi[0])*q_+0.7071067811865475*vmapSq[0]*m_+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = 0.7071067811865475*vmapSq[1]*m_; + hamil[2] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[4] = 0.7071067811865475*vmapSq[2]*m_; + + double JRatfR[6] = {0.}; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.0; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1.c new file mode 100644 index 0000000000..78f56ea7d7 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1.c @@ -0,0 +1,230 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (2.4494897427831783*phi[1]+1.4142135623730951*phi[0])*q_+vmapSq[0]*m_+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[3]+1.4142135623730951*phi[2])*q_+vmap[2]*(1.7320508075688772*bmag[3]+bmag[2]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[5] = (1.7320508075688772*bmag[3]+bmag[2])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double JRatfR[12] = {0.}; + JRatfR[0] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[5]+jacobgeo_rat_surfR[0]*JfR[1])-1.0*(jacobgeo_rat_surfR[1]*JfR[2]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[5]+JfR[1]*jacobgeo_rat_surfR[1])-1.0*(jacobgeo_rat_surfR[0]*JfR[2]+JfR[0]*jacobgeo_rat_surfR[1]))); + JRatfR[2] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[11]+jacobgeo_rat_surfR[0]*JfR[6])-1.0*(jacobgeo_rat_surfR[1]*JfR[7]+jacobgeo_rat_surfR[0]*JfR[3]))); + JRatfR[3] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[12]+jacobgeo_rat_surfR[0]*JfR[8])-1.0*(jacobgeo_rat_surfR[1]*JfR[9]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[11]+jacobgeo_rat_surfR[1]*JfR[6])-1.0*(jacobgeo_rat_surfR[0]*JfR[7]+jacobgeo_rat_surfR[1]*JfR[3]))); + JRatfR[5] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[12]+jacobgeo_rat_surfR[1]*JfR[8])-1.0*(jacobgeo_rat_surfR[0]*JfR[9]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[6] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[15]+jacobgeo_rat_surfR[0]*JfR[13])-1.0*(jacobgeo_rat_surfR[1]*JfR[14]+jacobgeo_rat_surfR[0]*JfR[10]))); + JRatfR[7] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[15]+jacobgeo_rat_surfR[1]*JfR[13])-1.0*(jacobgeo_rat_surfR[0]*JfR[14]+jacobgeo_rat_surfR[1]*JfR[10]))); + JRatfR[8] = 0.03333333333333333*(-(25.980762113533157*jacobgeo_rat_surfR[1]*JfR[20])+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[18]-3.0*jacobgeo_rat_surfR[0]*JfR[17])+15.0*jacobgeo_rat_surfR[0]*JfR[16]); + JRatfR[9] = 0.03333333333333333*(8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[16]-3.0*jacobgeo_rat_surfR[0]*JfR[20])+15.0*jacobgeo_rat_surfR[0]*JfR[18]-25.980762113533157*jacobgeo_rat_surfR[1]*JfR[17]); + 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 *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]-0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]-0.4743416490252568*JRatfR[7]+0.4743416490252568*JRatfR[6]+0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3952847075210473*JRatfR[11])+0.39528470752104733*(JRatfR[10]+JRatfR[9])-0.3952847075210473*JRatfR[8]+0.3535533905932737*JRatfR[5]-0.3535533905932737*(JRatfR[3]+JRatfR[1])+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]-0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]+0.4743416490252568*JRatfR[7]-0.4743416490252568*JRatfR[6]+0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])+0.31622776601683794*JRatfR[10]-0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]+0.4743416490252568*JRatfR[7]-0.4743416490252568*JRatfR[6]-0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3952847075210473*JRatfR[11]-0.39528470752104733*JRatfR[10]+0.39528470752104733*JRatfR[9]-0.3952847075210473*JRatfR[8]-0.3535533905932737*JRatfR[5]+0.3535533905932737*JRatfR[3]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])+0.31622776601683794*JRatfR[10]-0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]-0.4743416490252568*JRatfR[7]+0.4743416490252568*JRatfR[6]-0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])-0.31622776601683794*JRatfR[10]+0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]+0.4743416490252568*(JRatfR[7]+JRatfR[6])-0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3952847075210473*JRatfR[11]+0.39528470752104733*JRatfR[10]-0.39528470752104733*JRatfR[9]-0.3952847075210473*JRatfR[8]-0.3535533905932737*(JRatfR[5]+JRatfR[3])+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])-0.31622776601683794*JRatfR[10]+0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]-0.4743416490252568*(JRatfR[7]+JRatfR[6])-0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]+0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]-0.4743416490252568*(JRatfR[7]+JRatfR[6])+0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3952847075210473*JRatfR[11])-0.39528470752104733*(JRatfR[10]+JRatfR[9])-0.3952847075210473*JRatfR[8]+0.3535533905932737*(JRatfR[5]+JRatfR[3]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]+0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]+0.4743416490252568*(JRatfR[7]+JRatfR[6])+0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1.c new file mode 100644 index 0000000000..82f5835ad3 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1.c @@ -0,0 +1,397 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[1]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[4]+1.4142135623730951*phi[2])*q_; + hamil[2] = (2.4494897427831783*phi[5]+1.4142135623730951*phi[3])*q_+vmap[2]*(1.7320508075688772*bmag[5]+bmag[3]); + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[6])*q_; + hamil[9] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[3]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfR[24] = {0.}; + JRatfR[0] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[16]+jacobgeo_rat_surfR[2]*JfR[7]+jacobgeo_rat_surfR[1]*JfR[6]+jacobgeo_rat_surfR[0]*JfR[1])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[8]+jacobgeo_rat_surfR[2]*JfR[3]+jacobgeo_rat_surfR[1]*JfR[2]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[16]+jacobgeo_rat_surfR[3]*JfR[7]+jacobgeo_rat_surfR[0]*JfR[6]+JfR[1]*jacobgeo_rat_surfR[1])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[8]+JfR[3]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[0]*JfR[2]+JfR[0]*jacobgeo_rat_surfR[1]))); + JRatfR[2] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[16]+jacobgeo_rat_surfR[0]*JfR[7]+jacobgeo_rat_surfR[3]*JfR[6]+JfR[1]*jacobgeo_rat_surfR[2])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[8]+JfR[2]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[0]*JfR[3]+JfR[0]*jacobgeo_rat_surfR[2]))); + JRatfR[3] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[26]+jacobgeo_rat_surfR[2]*JfR[18]+jacobgeo_rat_surfR[1]*JfR[17]+jacobgeo_rat_surfR[0]*JfR[9])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[19]+jacobgeo_rat_surfR[2]*JfR[11]+jacobgeo_rat_surfR[1]*JfR[10]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[27]+jacobgeo_rat_surfR[2]*JfR[21]+jacobgeo_rat_surfR[1]*JfR[20]+jacobgeo_rat_surfR[0]*JfR[12])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[22]+jacobgeo_rat_surfR[2]*JfR[14]+jacobgeo_rat_surfR[1]*JfR[13]+jacobgeo_rat_surfR[0]*JfR[5]))); + JRatfR[5] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[16]+jacobgeo_rat_surfR[1]*JfR[7]+jacobgeo_rat_surfR[2]*JfR[6]+JfR[1]*jacobgeo_rat_surfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[8]+JfR[0]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[1]*JfR[3]+JfR[2]*jacobgeo_rat_surfR[2]))); + JRatfR[6] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[26]+jacobgeo_rat_surfR[3]*JfR[18]+jacobgeo_rat_surfR[0]*JfR[17]+jacobgeo_rat_surfR[1]*JfR[9])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[19]+jacobgeo_rat_surfR[3]*JfR[11]+jacobgeo_rat_surfR[0]*JfR[10]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[7] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[26]+jacobgeo_rat_surfR[0]*JfR[18]+jacobgeo_rat_surfR[3]*JfR[17]+jacobgeo_rat_surfR[2]*JfR[9])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[19]+jacobgeo_rat_surfR[0]*JfR[11]+jacobgeo_rat_surfR[3]*JfR[10]+jacobgeo_rat_surfR[2]*JfR[4]))); + JRatfR[8] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[27]+jacobgeo_rat_surfR[3]*JfR[21]+jacobgeo_rat_surfR[0]*JfR[20]+jacobgeo_rat_surfR[1]*JfR[12])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[22]+jacobgeo_rat_surfR[3]*JfR[14]+jacobgeo_rat_surfR[0]*JfR[13]+jacobgeo_rat_surfR[1]*JfR[5]))); + JRatfR[9] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[27]+jacobgeo_rat_surfR[0]*JfR[21]+jacobgeo_rat_surfR[3]*JfR[20]+jacobgeo_rat_surfR[2]*JfR[12])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[22]+jacobgeo_rat_surfR[0]*JfR[14]+jacobgeo_rat_surfR[3]*JfR[13]+jacobgeo_rat_surfR[2]*JfR[5]))); + JRatfR[10] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[31]+jacobgeo_rat_surfR[2]*JfR[29]+jacobgeo_rat_surfR[1]*JfR[28]+jacobgeo_rat_surfR[0]*JfR[23])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[30]+jacobgeo_rat_surfR[2]*JfR[25]+jacobgeo_rat_surfR[1]*JfR[24]+jacobgeo_rat_surfR[0]*JfR[15]))); + JRatfR[11] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[26]+jacobgeo_rat_surfR[1]*JfR[18]+jacobgeo_rat_surfR[2]*JfR[17]+jacobgeo_rat_surfR[3]*JfR[9])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[19]+jacobgeo_rat_surfR[1]*JfR[11]+jacobgeo_rat_surfR[2]*JfR[10]+jacobgeo_rat_surfR[3]*JfR[4]))); + JRatfR[12] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[27]+jacobgeo_rat_surfR[1]*JfR[21]+jacobgeo_rat_surfR[2]*JfR[20]+jacobgeo_rat_surfR[3]*JfR[12])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[22]+jacobgeo_rat_surfR[1]*JfR[14]+jacobgeo_rat_surfR[2]*JfR[13]+jacobgeo_rat_surfR[3]*JfR[5]))); + JRatfR[13] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[31]+jacobgeo_rat_surfR[3]*JfR[29]+jacobgeo_rat_surfR[0]*JfR[28]+jacobgeo_rat_surfR[1]*JfR[23])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[30]+jacobgeo_rat_surfR[3]*JfR[25]+jacobgeo_rat_surfR[0]*JfR[24]+jacobgeo_rat_surfR[1]*JfR[15]))); + JRatfR[14] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[31]+jacobgeo_rat_surfR[0]*JfR[29]+jacobgeo_rat_surfR[3]*JfR[28]+jacobgeo_rat_surfR[2]*JfR[23])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[30]+jacobgeo_rat_surfR[0]*JfR[25]+jacobgeo_rat_surfR[3]*JfR[24]+jacobgeo_rat_surfR[2]*JfR[15]))); + JRatfR[15] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[31]+jacobgeo_rat_surfR[1]*JfR[29]+jacobgeo_rat_surfR[2]*JfR[28]+jacobgeo_rat_surfR[3]*JfR[23])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[30]+jacobgeo_rat_surfR[1]*JfR[25]+jacobgeo_rat_surfR[2]*JfR[24]+jacobgeo_rat_surfR[3]*JfR[15]))); + JRatfR[16] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[35]+jacobgeo_rat_surfR[1]*JfR[34])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[43]+jacobgeo_rat_surfR[0]*JfR[33]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[39]+jacobgeo_rat_surfR[0]*JfR[32])-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[38]+jacobgeo_rat_surfR[1]*JfR[37])); + JRatfR[17] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[43]+jacobgeo_rat_surfR[1]*JfR[33]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[39]+jacobgeo_rat_surfR[1]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[38]+jacobgeo_rat_surfR[0]*JfR[37]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[35]+jacobgeo_rat_surfR[0]*JfR[34])); + JRatfR[18] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[43]+jacobgeo_rat_surfR[2]*JfR[33]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[39]+jacobgeo_rat_surfR[2]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[38]+jacobgeo_rat_surfR[3]*JfR[37]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[35]+jacobgeo_rat_surfR[3]*JfR[34])); + JRatfR[19] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[42]+jacobgeo_rat_surfR[1]*JfR[41])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[47]+jacobgeo_rat_surfR[0]*JfR[40]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[46]+jacobgeo_rat_surfR[0]*JfR[36])-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[45]+jacobgeo_rat_surfR[1]*JfR[44])); + JRatfR[20] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[35]+jacobgeo_rat_surfR[2]*JfR[34])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[43]+jacobgeo_rat_surfR[3]*JfR[33]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[39]+jacobgeo_rat_surfR[3]*JfR[32])-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[38]+jacobgeo_rat_surfR[2]*JfR[37])); + JRatfR[21] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[47]+jacobgeo_rat_surfR[1]*JfR[40]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[46]+jacobgeo_rat_surfR[1]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[45]+jacobgeo_rat_surfR[0]*JfR[44]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[42]+jacobgeo_rat_surfR[0]*JfR[41])); + 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 *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*(JRatfR[9]+JRatfR[8]+JRatfR[5])-0.25*(JRatfR[4]+JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*(JRatfR[9]+JRatfR[8])+0.25*(JRatfR[5]+JRatfR[4])-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*JRatfR[18]+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.25*(JRatfR[5]+JRatfR[4])+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18])+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*JRatfR[9]-0.25*(JRatfR[8]+JRatfR[5])+0.25*(JRatfR[4]+JRatfR[2])-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18])-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9])-0.25*(JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2])+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*JRatfR[18]-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9])+0.25*JRatfR[8]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1.c new file mode 100644 index 0000000000..828c96be5f --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1.c @@ -0,0 +1,230 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (2.4494897427831783*phi[2]+1.4142135623730951*phi[0])*q_+vmapSq[0]*m_+(1.7320508075688772*bmag[2]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[3]+1.4142135623730951*phi[1])*q_+vmap[2]*(1.7320508075688772*bmag[3]+bmag[1]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (1.7320508075688772*bmag[2]+bmag[0])*vmap[3]; + hamil[5] = (1.7320508075688772*bmag[3]+bmag[1])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double JRatfR[12] = {0.}; + JRatfR[0] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[5]+jacobgeo_rat_surfR[0]*JfR[2])-1.0*(JfR[1]*jacobgeo_rat_surfR[1]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[5]+jacobgeo_rat_surfR[1]*JfR[2])-1.0*(JfR[0]*jacobgeo_rat_surfR[1]+jacobgeo_rat_surfR[0]*JfR[1]))); + JRatfR[2] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[11]+jacobgeo_rat_surfR[0]*JfR[7])-1.0*(jacobgeo_rat_surfR[1]*JfR[6]+jacobgeo_rat_surfR[0]*JfR[3]))); + JRatfR[3] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[12]+jacobgeo_rat_surfR[0]*JfR[9])-1.0*(jacobgeo_rat_surfR[1]*JfR[8]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[11]+jacobgeo_rat_surfR[1]*JfR[7])-1.0*(jacobgeo_rat_surfR[0]*JfR[6]+jacobgeo_rat_surfR[1]*JfR[3]))); + JRatfR[5] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[12]+jacobgeo_rat_surfR[1]*JfR[9])-1.0*(jacobgeo_rat_surfR[0]*JfR[8]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[6] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[15]+jacobgeo_rat_surfR[0]*JfR[14])-1.0*(jacobgeo_rat_surfR[1]*JfR[13]+jacobgeo_rat_surfR[0]*JfR[10]))); + JRatfR[7] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[15]+jacobgeo_rat_surfR[1]*JfR[14])-1.0*(jacobgeo_rat_surfR[0]*JfR[13]+jacobgeo_rat_surfR[1]*JfR[10]))); + JRatfR[8] = 0.03333333333333333*(-(25.980762113533157*jacobgeo_rat_surfR[1]*JfR[20])+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[17]-3.0*jacobgeo_rat_surfR[0]*JfR[18])+15.0*jacobgeo_rat_surfR[0]*JfR[16]); + JRatfR[9] = 0.03333333333333333*(8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[16]-3.0*jacobgeo_rat_surfR[0]*JfR[20])-25.980762113533157*jacobgeo_rat_surfR[1]*JfR[18]+15.0*jacobgeo_rat_surfR[0]*JfR[17]); + 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 *flux_surf_nodal = &flux_surf[12]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]-0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]-0.4743416490252568*JRatfR[7]+0.4743416490252568*JRatfR[6]+0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3952847075210473*JRatfR[11])+0.39528470752104733*(JRatfR[10]+JRatfR[9])-0.3952847075210473*JRatfR[8]+0.3535533905932737*JRatfR[5]-0.3535533905932737*(JRatfR[3]+JRatfR[1])+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]-0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]+0.4743416490252568*JRatfR[7]-0.4743416490252568*JRatfR[6]+0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])+0.31622776601683794*JRatfR[10]-0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]+0.4743416490252568*JRatfR[7]-0.4743416490252568*JRatfR[6]-0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3952847075210473*JRatfR[11]-0.39528470752104733*JRatfR[10]+0.39528470752104733*JRatfR[9]-0.3952847075210473*JRatfR[8]-0.3535533905932737*JRatfR[5]+0.3535533905932737*JRatfR[3]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])+0.31622776601683794*JRatfR[10]-0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]-0.4743416490252568*JRatfR[7]+0.4743416490252568*JRatfR[6]-0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3162277660168379*JRatfR[11])-0.31622776601683794*JRatfR[10]+0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]+0.4743416490252568*(JRatfR[7]+JRatfR[6])-0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3952847075210473*JRatfR[11]+0.39528470752104733*JRatfR[10]-0.39528470752104733*JRatfR[9]-0.3952847075210473*JRatfR[8]-0.3535533905932737*(JRatfR[5]+JRatfR[3])+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3162277660168379*JRatfR[11])-0.31622776601683794*JRatfR[10]+0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]-0.4743416490252568*(JRatfR[7]+JRatfR[6])-0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3162277660168379*JRatfR[11]+0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]-0.4743416490252568*(JRatfR[7]+JRatfR[6])+0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3952847075210473*JRatfR[11])-0.39528470752104733*(JRatfR[10]+JRatfR[9])-0.3952847075210473*JRatfR[8]+0.3535533905932737*(JRatfR[5]+JRatfR[3]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3162277660168379*JRatfR[11]+0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]+0.4743416490252568*(JRatfR[7]+JRatfR[6])+0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1.c new file mode 100644 index 0000000000..a1d2929177 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1.c @@ -0,0 +1,399 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[2]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+bmag[0]*vmap[2]; + hamil[1] = (2.4494897427831783*phi[4]+1.4142135623730951*phi[1])*q_+bmag[1]*vmap[2]; + hamil[2] = (2.4494897427831783*phi[6]+1.4142135623730951*phi[3])*q_+vmap[2]*bmag[3]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = bmag[0]*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[5])*q_+vmap[2]*bmag[5]; + hamil[8] = bmag[1]*vmap[3]; + hamil[9] = bmag[3]*vmap[3]; + hamil[12] = vmap[3]*bmag[5]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfR[24] = {0.}; + JRatfR[0] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[16]+jacobgeo_rat_surfR[2]*JfR[8]+jacobgeo_rat_surfR[1]*JfR[6]+jacobgeo_rat_surfR[0]*JfR[2])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[7]+jacobgeo_rat_surfR[2]*JfR[3]+JfR[1]*jacobgeo_rat_surfR[1]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[16]+jacobgeo_rat_surfR[3]*JfR[8]+jacobgeo_rat_surfR[0]*JfR[6]+jacobgeo_rat_surfR[1]*JfR[2])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[7]+JfR[3]*jacobgeo_rat_surfR[3]+JfR[0]*jacobgeo_rat_surfR[1]+jacobgeo_rat_surfR[0]*JfR[1]))); + JRatfR[2] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[16]+jacobgeo_rat_surfR[0]*JfR[8]+jacobgeo_rat_surfR[3]*JfR[6]+JfR[2]*jacobgeo_rat_surfR[2])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[7]+JfR[1]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[0]*JfR[3]+JfR[0]*jacobgeo_rat_surfR[2]))); + JRatfR[3] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[26]+jacobgeo_rat_surfR[2]*JfR[19]+jacobgeo_rat_surfR[1]*JfR[17]+jacobgeo_rat_surfR[0]*JfR[10])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[18]+jacobgeo_rat_surfR[2]*JfR[11]+jacobgeo_rat_surfR[1]*JfR[9]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[27]+jacobgeo_rat_surfR[2]*JfR[22]+jacobgeo_rat_surfR[1]*JfR[20]+jacobgeo_rat_surfR[0]*JfR[13])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[21]+jacobgeo_rat_surfR[2]*JfR[14]+jacobgeo_rat_surfR[1]*JfR[12]+jacobgeo_rat_surfR[0]*JfR[5]))); + JRatfR[5] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[16]+jacobgeo_rat_surfR[1]*JfR[8]+jacobgeo_rat_surfR[2]*JfR[6]+JfR[2]*jacobgeo_rat_surfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[7]+JfR[0]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[1]*JfR[3]+JfR[1]*jacobgeo_rat_surfR[2]))); + JRatfR[6] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[26]+jacobgeo_rat_surfR[3]*JfR[19]+jacobgeo_rat_surfR[0]*JfR[17]+jacobgeo_rat_surfR[1]*JfR[10])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[18]+jacobgeo_rat_surfR[3]*JfR[11]+jacobgeo_rat_surfR[0]*JfR[9]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[7] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[26]+jacobgeo_rat_surfR[0]*JfR[19]+jacobgeo_rat_surfR[3]*JfR[17]+jacobgeo_rat_surfR[2]*JfR[10])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[18]+jacobgeo_rat_surfR[0]*JfR[11]+jacobgeo_rat_surfR[3]*JfR[9]+jacobgeo_rat_surfR[2]*JfR[4]))); + JRatfR[8] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[27]+jacobgeo_rat_surfR[3]*JfR[22]+jacobgeo_rat_surfR[0]*JfR[20]+jacobgeo_rat_surfR[1]*JfR[13])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[21]+jacobgeo_rat_surfR[3]*JfR[14]+jacobgeo_rat_surfR[0]*JfR[12]+jacobgeo_rat_surfR[1]*JfR[5]))); + JRatfR[9] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[27]+jacobgeo_rat_surfR[0]*JfR[22]+jacobgeo_rat_surfR[3]*JfR[20]+jacobgeo_rat_surfR[2]*JfR[13])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[21]+jacobgeo_rat_surfR[0]*JfR[14]+jacobgeo_rat_surfR[3]*JfR[12]+jacobgeo_rat_surfR[2]*JfR[5]))); + JRatfR[10] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[31]+jacobgeo_rat_surfR[2]*JfR[30]+jacobgeo_rat_surfR[1]*JfR[28]+jacobgeo_rat_surfR[0]*JfR[24])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[29]+jacobgeo_rat_surfR[2]*JfR[25]+jacobgeo_rat_surfR[1]*JfR[23]+jacobgeo_rat_surfR[0]*JfR[15]))); + JRatfR[11] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[26]+jacobgeo_rat_surfR[1]*JfR[19]+jacobgeo_rat_surfR[2]*JfR[17]+jacobgeo_rat_surfR[3]*JfR[10])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[18]+jacobgeo_rat_surfR[1]*JfR[11]+jacobgeo_rat_surfR[2]*JfR[9]+jacobgeo_rat_surfR[3]*JfR[4]))); + JRatfR[12] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[27]+jacobgeo_rat_surfR[1]*JfR[22]+jacobgeo_rat_surfR[2]*JfR[20]+jacobgeo_rat_surfR[3]*JfR[13])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[21]+jacobgeo_rat_surfR[1]*JfR[14]+jacobgeo_rat_surfR[2]*JfR[12]+jacobgeo_rat_surfR[3]*JfR[5]))); + JRatfR[13] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[31]+jacobgeo_rat_surfR[3]*JfR[30]+jacobgeo_rat_surfR[0]*JfR[28]+jacobgeo_rat_surfR[1]*JfR[24])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[29]+jacobgeo_rat_surfR[3]*JfR[25]+jacobgeo_rat_surfR[0]*JfR[23]+jacobgeo_rat_surfR[1]*JfR[15]))); + JRatfR[14] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[31]+jacobgeo_rat_surfR[0]*JfR[30]+jacobgeo_rat_surfR[3]*JfR[28]+jacobgeo_rat_surfR[2]*JfR[24])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[29]+jacobgeo_rat_surfR[0]*JfR[25]+jacobgeo_rat_surfR[3]*JfR[23]+jacobgeo_rat_surfR[2]*JfR[15]))); + JRatfR[15] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[31]+jacobgeo_rat_surfR[1]*JfR[30]+jacobgeo_rat_surfR[2]*JfR[28]+jacobgeo_rat_surfR[3]*JfR[24])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[29]+jacobgeo_rat_surfR[1]*JfR[25]+jacobgeo_rat_surfR[2]*JfR[23]+jacobgeo_rat_surfR[3]*JfR[15]))); + JRatfR[16] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[35]+jacobgeo_rat_surfR[1]*JfR[33])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[43]+jacobgeo_rat_surfR[0]*JfR[34]))-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[39]+jacobgeo_rat_surfR[1]*JfR[37])+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[38]+jacobgeo_rat_surfR[0]*JfR[32])); + JRatfR[17] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[43]+jacobgeo_rat_surfR[1]*JfR[34]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[38]+jacobgeo_rat_surfR[1]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[39]+jacobgeo_rat_surfR[0]*JfR[37]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[35]+jacobgeo_rat_surfR[0]*JfR[33])); + JRatfR[18] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[43]+jacobgeo_rat_surfR[2]*JfR[34]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[38]+jacobgeo_rat_surfR[2]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[39]+jacobgeo_rat_surfR[3]*JfR[37]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[35]+jacobgeo_rat_surfR[3]*JfR[33])); + JRatfR[19] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[42]+jacobgeo_rat_surfR[1]*JfR[40])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[47]+jacobgeo_rat_surfR[0]*JfR[41]))-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[46]+jacobgeo_rat_surfR[1]*JfR[44])+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[45]+jacobgeo_rat_surfR[0]*JfR[36])); + JRatfR[20] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[35]+jacobgeo_rat_surfR[2]*JfR[33])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[43]+jacobgeo_rat_surfR[3]*JfR[34]))-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[39]+jacobgeo_rat_surfR[2]*JfR[37])+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[38]+jacobgeo_rat_surfR[3]*JfR[32])); + JRatfR[21] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[47]+jacobgeo_rat_surfR[1]*JfR[41]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[45]+jacobgeo_rat_surfR[1]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[46]+jacobgeo_rat_surfR[0]*JfR[44]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[42]+jacobgeo_rat_surfR[0]*JfR[40])); + 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 *flux_surf_nodal = &flux_surf[24]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*(JRatfR[9]+JRatfR[8]+JRatfR[5])-0.25*(JRatfR[4]+JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*(JRatfR[9]+JRatfR[8])+0.25*(JRatfR[5]+JRatfR[4])-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*JRatfR[18]+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.25*(JRatfR[5]+JRatfR[4])+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18])+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*JRatfR[9]-0.25*(JRatfR[8]+JRatfR[5])+0.25*(JRatfR[4]+JRatfR[2])-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18])-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9])-0.25*(JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2])+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*JRatfR[18]-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9])+0.25*JRatfR[8]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdy2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1.c new file mode 100644 index 0000000000..22ca3cba66 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1.c @@ -0,0 +1,397 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[3]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+vmap[2]*(1.7320508075688772*bmag[3]+bmag[0]); + hamil[1] = (2.4494897427831783*phi[5]+1.4142135623730951*phi[1])*q_+vmap[2]*(1.7320508075688772*bmag[5]+bmag[1]); + hamil[2] = (2.4494897427831783*phi[6]+1.4142135623730951*phi[2])*q_; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (1.7320508075688772*bmag[3]+bmag[0])*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[4])*q_; + hamil[8] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[1]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfR[24] = {0.}; + JRatfR[0] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[16]+jacobgeo_rat_surfR[2]*JfR[8]+jacobgeo_rat_surfR[1]*JfR[7]+jacobgeo_rat_surfR[0]*JfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[6]+JfR[2]*jacobgeo_rat_surfR[2]+JfR[1]*jacobgeo_rat_surfR[1]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[16]+jacobgeo_rat_surfR[3]*JfR[8]+jacobgeo_rat_surfR[0]*JfR[7]+jacobgeo_rat_surfR[1]*JfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[6]+JfR[2]*jacobgeo_rat_surfR[3]+JfR[0]*jacobgeo_rat_surfR[1]+jacobgeo_rat_surfR[0]*JfR[1]))); + JRatfR[2] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[16]+jacobgeo_rat_surfR[0]*JfR[8]+jacobgeo_rat_surfR[3]*JfR[7]+jacobgeo_rat_surfR[2]*JfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[6]+JfR[1]*jacobgeo_rat_surfR[3]+JfR[0]*jacobgeo_rat_surfR[2]+jacobgeo_rat_surfR[0]*JfR[2]))); + JRatfR[3] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[26]+jacobgeo_rat_surfR[2]*JfR[19]+jacobgeo_rat_surfR[1]*JfR[18]+jacobgeo_rat_surfR[0]*JfR[11])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[17]+jacobgeo_rat_surfR[2]*JfR[10]+jacobgeo_rat_surfR[1]*JfR[9]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[27]+jacobgeo_rat_surfR[2]*JfR[22]+jacobgeo_rat_surfR[1]*JfR[21]+jacobgeo_rat_surfR[0]*JfR[14])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[20]+jacobgeo_rat_surfR[2]*JfR[13]+jacobgeo_rat_surfR[1]*JfR[12]+jacobgeo_rat_surfR[0]*JfR[5]))); + JRatfR[5] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[16]+jacobgeo_rat_surfR[1]*JfR[8]+jacobgeo_rat_surfR[2]*JfR[7]+JfR[3]*jacobgeo_rat_surfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[6]+JfR[0]*jacobgeo_rat_surfR[3]+JfR[1]*jacobgeo_rat_surfR[2]+jacobgeo_rat_surfR[1]*JfR[2]))); + JRatfR[6] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[26]+jacobgeo_rat_surfR[3]*JfR[19]+jacobgeo_rat_surfR[0]*JfR[18]+jacobgeo_rat_surfR[1]*JfR[11])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[17]+jacobgeo_rat_surfR[3]*JfR[10]+jacobgeo_rat_surfR[0]*JfR[9]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[7] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[26]+jacobgeo_rat_surfR[0]*JfR[19]+jacobgeo_rat_surfR[3]*JfR[18]+jacobgeo_rat_surfR[2]*JfR[11])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[17]+jacobgeo_rat_surfR[0]*JfR[10]+jacobgeo_rat_surfR[3]*JfR[9]+jacobgeo_rat_surfR[2]*JfR[4]))); + JRatfR[8] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[27]+jacobgeo_rat_surfR[3]*JfR[22]+jacobgeo_rat_surfR[0]*JfR[21]+jacobgeo_rat_surfR[1]*JfR[14])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[20]+jacobgeo_rat_surfR[3]*JfR[13]+jacobgeo_rat_surfR[0]*JfR[12]+jacobgeo_rat_surfR[1]*JfR[5]))); + JRatfR[9] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[27]+jacobgeo_rat_surfR[0]*JfR[22]+jacobgeo_rat_surfR[3]*JfR[21]+jacobgeo_rat_surfR[2]*JfR[14])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[20]+jacobgeo_rat_surfR[0]*JfR[13]+jacobgeo_rat_surfR[3]*JfR[12]+jacobgeo_rat_surfR[2]*JfR[5]))); + JRatfR[10] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[31]+jacobgeo_rat_surfR[2]*JfR[30]+jacobgeo_rat_surfR[1]*JfR[29]+jacobgeo_rat_surfR[0]*JfR[25])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[28]+jacobgeo_rat_surfR[2]*JfR[24]+jacobgeo_rat_surfR[1]*JfR[23]+jacobgeo_rat_surfR[0]*JfR[15]))); + JRatfR[11] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[26]+jacobgeo_rat_surfR[1]*JfR[19]+jacobgeo_rat_surfR[2]*JfR[18]+jacobgeo_rat_surfR[3]*JfR[11])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[17]+jacobgeo_rat_surfR[1]*JfR[10]+jacobgeo_rat_surfR[2]*JfR[9]+jacobgeo_rat_surfR[3]*JfR[4]))); + JRatfR[12] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[27]+jacobgeo_rat_surfR[1]*JfR[22]+jacobgeo_rat_surfR[2]*JfR[21]+jacobgeo_rat_surfR[3]*JfR[14])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[20]+jacobgeo_rat_surfR[1]*JfR[13]+jacobgeo_rat_surfR[2]*JfR[12]+jacobgeo_rat_surfR[3]*JfR[5]))); + JRatfR[13] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[31]+jacobgeo_rat_surfR[3]*JfR[30]+jacobgeo_rat_surfR[0]*JfR[29]+jacobgeo_rat_surfR[1]*JfR[25])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[28]+jacobgeo_rat_surfR[3]*JfR[24]+jacobgeo_rat_surfR[0]*JfR[23]+jacobgeo_rat_surfR[1]*JfR[15]))); + JRatfR[14] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[31]+jacobgeo_rat_surfR[0]*JfR[30]+jacobgeo_rat_surfR[3]*JfR[29]+jacobgeo_rat_surfR[2]*JfR[25])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[28]+jacobgeo_rat_surfR[0]*JfR[24]+jacobgeo_rat_surfR[3]*JfR[23]+jacobgeo_rat_surfR[2]*JfR[15]))); + JRatfR[15] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[31]+jacobgeo_rat_surfR[1]*JfR[30]+jacobgeo_rat_surfR[2]*JfR[29]+jacobgeo_rat_surfR[3]*JfR[25])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[28]+jacobgeo_rat_surfR[1]*JfR[24]+jacobgeo_rat_surfR[2]*JfR[23]+jacobgeo_rat_surfR[3]*JfR[15]))); + JRatfR[16] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[34]+jacobgeo_rat_surfR[1]*JfR[33])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[43]+jacobgeo_rat_surfR[0]*JfR[35]))-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[39]+jacobgeo_rat_surfR[1]*JfR[38])+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[37]+jacobgeo_rat_surfR[0]*JfR[32])); + JRatfR[17] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[43]+jacobgeo_rat_surfR[1]*JfR[35]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[37]+jacobgeo_rat_surfR[1]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[39]+jacobgeo_rat_surfR[0]*JfR[38]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[34]+jacobgeo_rat_surfR[0]*JfR[33])); + JRatfR[18] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[43]+jacobgeo_rat_surfR[2]*JfR[35]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[37]+jacobgeo_rat_surfR[2]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[39]+jacobgeo_rat_surfR[3]*JfR[38]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[34]+jacobgeo_rat_surfR[3]*JfR[33])); + JRatfR[19] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[41]+jacobgeo_rat_surfR[1]*JfR[40])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[47]+jacobgeo_rat_surfR[0]*JfR[42]))-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[46]+jacobgeo_rat_surfR[1]*JfR[45])+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[44]+jacobgeo_rat_surfR[0]*JfR[36])); + JRatfR[20] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[34]+jacobgeo_rat_surfR[2]*JfR[33])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[43]+jacobgeo_rat_surfR[3]*JfR[35]))-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[39]+jacobgeo_rat_surfR[2]*JfR[38])+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[37]+jacobgeo_rat_surfR[3]*JfR[32])); + JRatfR[21] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[47]+jacobgeo_rat_surfR[1]*JfR[42]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[44]+jacobgeo_rat_surfR[1]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[46]+jacobgeo_rat_surfR[0]*JfR[45]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[41]+jacobgeo_rat_surfR[0]*JfR[40])); + 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 *flux_surf_nodal = &flux_surf[48]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*(JRatfR[9]+JRatfR[8]+JRatfR[5])-0.25*(JRatfR[4]+JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*(JRatfR[9]+JRatfR[8])+0.25*(JRatfR[5]+JRatfR[4])-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*JRatfR[18]+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.25*(JRatfR[5]+JRatfR[4])+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18])+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*JRatfR[9]-0.25*(JRatfR[8]+JRatfR[5])+0.25*(JRatfR[4]+JRatfR[2])-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18])-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9])-0.25*(JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2])+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*JRatfR[18]-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9])+0.25*JRatfR[8]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1.c new file mode 100644 index 0000000000..fde3592231 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1.c @@ -0,0 +1,99 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + double hamil[6] = {0.}; + hamil[0] = (phi[0]-1.7320508075688772*phi[1])*q_+0.5*vmapSq[0]*m_; + hamil[1] = 0.5*vmapSq[1]*m_; + hamil[2] = 0.5*vmapSq[2]*m_; + + double JRatfL[3] = {0.}; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = -(0.7745966692414834*JfR[5])+0.4472135954999579*JfR[4]+1.1618950038622249*JfR[3]-0.6708203932499369*JfR[2]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = 0.9682458365518543*JfR[5]-0.5590169943749475*JfR[4]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = -(0.7745966692414834*JfR[5])+0.4472135954999579*JfR[4]-1.1618950038622249*JfR[3]+0.6708203932499369*JfR[2]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1.c new file mode 100644 index 0000000000..cae67f7f34 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1.c @@ -0,0 +1,127 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + double hamil[12] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[1])*q_+0.7071067811865475*vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = 0.7071067811865475*vmapSq[1]*m_; + hamil[2] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[4] = 0.7071067811865475*vmapSq[2]*m_; + + double JRatfL[6] = {0.}; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = 0.5477225575051661*JfR[11]-0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]-0.8215838362577489*JfR[7]+0.4743416490252568*JfR[6]+0.6123724356957944*JfR[5]+0.8215838362577489*JfR[4]-0.3535533905932737*JfR[3]-0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = -(0.6846531968814573*JfR[11])+0.39528470752104733*JfR[10]+0.6846531968814574*JfR[9]-0.3952847075210473*JfR[8]+0.6123724356957944*JfR[5]-0.3535533905932737*JfR[3]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = 0.5477225575051661*JfR[11]-0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]+0.8215838362577489*JfR[7]-0.4743416490252568*JfR[6]+0.6123724356957944*JfR[5]-0.8215838362577489*JfR[4]-0.3535533905932737*JfR[3]+0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = -(0.5477225575051661*JfR[11])+0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]+0.8215838362577489*JfR[7]-0.4743416490252568*JfR[6]-0.6123724356957944*JfR[5]+0.8215838362577489*JfR[4]+0.3535533905932737*JfR[3]-0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = 0.6846531968814573*JfR[11]-0.39528470752104733*JfR[10]+0.6846531968814574*JfR[9]-0.3952847075210473*JfR[8]-0.6123724356957944*JfR[5]+0.3535533905932737*JfR[3]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + cfl = fmax(fabs(alpha_quad), fabs(cfl)); + JfL_quad = 0.0; + JfR_quad = -(0.5477225575051661*JfR[11])+0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]-0.8215838362577489*JfR[7]+0.4743416490252568*JfR[6]-0.6123724356957944*JfR[5]-0.8215838362577489*JfR[4]+0.3535533905932737*JfR[3]+0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1.c new file mode 100644 index 0000000000..2a7d13cc5b --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1.c @@ -0,0 +1,230 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[1])*q_+vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[3])*q_+vmap[2]*(bmag[2]-1.7320508075688772*bmag[3]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[5] = (bmag[2]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double JRatfL[12] = {0.}; + JRatfL[0] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[5]+jacobgeo_rat_surfL[0]*JfL[1])+jacobgeo_rat_surfL[1]*JfL[2]+JfL[0]*jacobgeo_rat_surfL[0]); + JRatfL[1] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[5]+JfL[1]*jacobgeo_rat_surfL[1])+jacobgeo_rat_surfL[0]*JfL[2]+JfL[0]*jacobgeo_rat_surfL[1]); + JRatfL[2] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[11]+jacobgeo_rat_surfL[0]*JfL[6])+jacobgeo_rat_surfL[1]*JfL[7]+jacobgeo_rat_surfL[0]*JfL[3]); + JRatfL[3] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[12]+jacobgeo_rat_surfL[0]*JfL[8])+jacobgeo_rat_surfL[1]*JfL[9]+jacobgeo_rat_surfL[0]*JfL[4]); + JRatfL[4] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[11]+jacobgeo_rat_surfL[1]*JfL[6])+jacobgeo_rat_surfL[0]*JfL[7]+jacobgeo_rat_surfL[1]*JfL[3]); + JRatfL[5] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[12]+jacobgeo_rat_surfL[1]*JfL[8])+jacobgeo_rat_surfL[0]*JfL[9]+jacobgeo_rat_surfL[1]*JfL[4]); + JRatfL[6] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[15]+jacobgeo_rat_surfL[0]*JfL[13])+jacobgeo_rat_surfL[1]*JfL[14]+jacobgeo_rat_surfL[0]*JfL[10]); + JRatfL[7] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[15]+jacobgeo_rat_surfL[1]*JfL[13])+jacobgeo_rat_surfL[0]*JfL[14]+jacobgeo_rat_surfL[1]*JfL[10]); + JRatfL[8] = 0.03333333333333333*(25.980762113533157*jacobgeo_rat_surfL[1]*JfL[20]+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[18]+3.0*jacobgeo_rat_surfL[0]*JfL[17])+15.0*jacobgeo_rat_surfL[0]*JfL[16]); + JRatfL[9] = 0.03333333333333333*(8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[20]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[16])+15.0*jacobgeo_rat_surfL[0]*JfL[18]+25.980762113533157*jacobgeo_rat_surfL[1]*JfL[17]); + 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 *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]-0.4841229182759271*(JfR[21]+JfR[20])+0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]+0.4330127018922193*(JfR[8]+JfR[5])-0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]+0.4841229182759271*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]); + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]-0.4841229182759271*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]-0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]); + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]+0.4841229182759271*(JfR[21]+JfR[20])-0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]-0.4330127018922193*(JfR[8]+JfR[5])+0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1.c new file mode 100644 index 0000000000..061695ebcb --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1.c @@ -0,0 +1,397 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[1]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[4])*q_; + hamil[2] = (1.4142135623730951*phi[3]-2.4494897427831783*phi[5])*q_+vmap[2]*(bmag[3]-1.7320508075688772*bmag[5]); + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[5] = (1.4142135623730951*phi[6]-2.4494897427831783*phi[7])*q_; + hamil[9] = vmap[3]*(bmag[3]-1.7320508075688772*bmag[5]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfL[24] = {0.}; + JRatfL[0] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[16]+jacobgeo_rat_surfL[2]*JfL[7]+jacobgeo_rat_surfL[1]*JfL[6]+jacobgeo_rat_surfL[0]*JfL[1])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[8]+jacobgeo_rat_surfL[2]*JfL[3]+jacobgeo_rat_surfL[1]*JfL[2]+JfL[0]*jacobgeo_rat_surfL[0])); + JRatfL[1] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[16]+jacobgeo_rat_surfL[3]*JfL[7]+jacobgeo_rat_surfL[0]*JfL[6]+JfL[1]*jacobgeo_rat_surfL[1])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[8]+JfL[3]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[0]*JfL[2]+JfL[0]*jacobgeo_rat_surfL[1])); + JRatfL[2] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[16]+jacobgeo_rat_surfL[0]*JfL[7]+jacobgeo_rat_surfL[3]*JfL[6]+JfL[1]*jacobgeo_rat_surfL[2])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[8]+JfL[2]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[0]*JfL[3]+JfL[0]*jacobgeo_rat_surfL[2])); + JRatfL[3] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[26]+jacobgeo_rat_surfL[2]*JfL[18]+jacobgeo_rat_surfL[1]*JfL[17]+jacobgeo_rat_surfL[0]*JfL[9])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[19]+jacobgeo_rat_surfL[2]*JfL[11]+jacobgeo_rat_surfL[1]*JfL[10]+jacobgeo_rat_surfL[0]*JfL[4])); + JRatfL[4] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[27]+jacobgeo_rat_surfL[2]*JfL[21]+jacobgeo_rat_surfL[1]*JfL[20]+jacobgeo_rat_surfL[0]*JfL[12])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[22]+jacobgeo_rat_surfL[2]*JfL[14]+jacobgeo_rat_surfL[1]*JfL[13]+jacobgeo_rat_surfL[0]*JfL[5])); + JRatfL[5] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[16]+jacobgeo_rat_surfL[1]*JfL[7]+jacobgeo_rat_surfL[2]*JfL[6]+JfL[1]*jacobgeo_rat_surfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[8]+JfL[0]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[1]*JfL[3]+JfL[2]*jacobgeo_rat_surfL[2])); + JRatfL[6] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[26]+jacobgeo_rat_surfL[3]*JfL[18]+jacobgeo_rat_surfL[0]*JfL[17]+jacobgeo_rat_surfL[1]*JfL[9])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[19]+jacobgeo_rat_surfL[3]*JfL[11]+jacobgeo_rat_surfL[0]*JfL[10]+jacobgeo_rat_surfL[1]*JfL[4])); + JRatfL[7] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[26]+jacobgeo_rat_surfL[0]*JfL[18]+jacobgeo_rat_surfL[3]*JfL[17]+jacobgeo_rat_surfL[2]*JfL[9])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[19]+jacobgeo_rat_surfL[0]*JfL[11]+jacobgeo_rat_surfL[3]*JfL[10]+jacobgeo_rat_surfL[2]*JfL[4])); + JRatfL[8] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[27]+jacobgeo_rat_surfL[3]*JfL[21]+jacobgeo_rat_surfL[0]*JfL[20]+jacobgeo_rat_surfL[1]*JfL[12])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[22]+jacobgeo_rat_surfL[3]*JfL[14]+jacobgeo_rat_surfL[0]*JfL[13]+jacobgeo_rat_surfL[1]*JfL[5])); + JRatfL[9] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[27]+jacobgeo_rat_surfL[0]*JfL[21]+jacobgeo_rat_surfL[3]*JfL[20]+jacobgeo_rat_surfL[2]*JfL[12])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[22]+jacobgeo_rat_surfL[0]*JfL[14]+jacobgeo_rat_surfL[3]*JfL[13]+jacobgeo_rat_surfL[2]*JfL[5])); + JRatfL[10] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[31]+jacobgeo_rat_surfL[2]*JfL[29]+jacobgeo_rat_surfL[1]*JfL[28]+jacobgeo_rat_surfL[0]*JfL[23])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[30]+jacobgeo_rat_surfL[2]*JfL[25]+jacobgeo_rat_surfL[1]*JfL[24]+jacobgeo_rat_surfL[0]*JfL[15])); + JRatfL[11] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[26]+jacobgeo_rat_surfL[1]*JfL[18]+jacobgeo_rat_surfL[2]*JfL[17]+jacobgeo_rat_surfL[3]*JfL[9])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[19]+jacobgeo_rat_surfL[1]*JfL[11]+jacobgeo_rat_surfL[2]*JfL[10]+jacobgeo_rat_surfL[3]*JfL[4])); + JRatfL[12] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[27]+jacobgeo_rat_surfL[1]*JfL[21]+jacobgeo_rat_surfL[2]*JfL[20]+jacobgeo_rat_surfL[3]*JfL[12])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[22]+jacobgeo_rat_surfL[1]*JfL[14]+jacobgeo_rat_surfL[2]*JfL[13]+jacobgeo_rat_surfL[3]*JfL[5])); + JRatfL[13] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[31]+jacobgeo_rat_surfL[3]*JfL[29]+jacobgeo_rat_surfL[0]*JfL[28]+jacobgeo_rat_surfL[1]*JfL[23])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[30]+jacobgeo_rat_surfL[3]*JfL[25]+jacobgeo_rat_surfL[0]*JfL[24]+jacobgeo_rat_surfL[1]*JfL[15])); + JRatfL[14] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[31]+jacobgeo_rat_surfL[0]*JfL[29]+jacobgeo_rat_surfL[3]*JfL[28]+jacobgeo_rat_surfL[2]*JfL[23])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[30]+jacobgeo_rat_surfL[0]*JfL[25]+jacobgeo_rat_surfL[3]*JfL[24]+jacobgeo_rat_surfL[2]*JfL[15])); + JRatfL[15] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[31]+jacobgeo_rat_surfL[1]*JfL[29]+jacobgeo_rat_surfL[2]*JfL[28]+jacobgeo_rat_surfL[3]*JfL[23])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[30]+jacobgeo_rat_surfL[1]*JfL[25]+jacobgeo_rat_surfL[2]*JfL[24]+jacobgeo_rat_surfL[3]*JfL[15])); + JRatfL[16] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[43]+jacobgeo_rat_surfL[0]*JfL[33])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[35]+jacobgeo_rat_surfL[1]*JfL[34]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[39]+jacobgeo_rat_surfL[0]*JfL[32])+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[38]+jacobgeo_rat_surfL[1]*JfL[37])); + JRatfL[17] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[43]+jacobgeo_rat_surfL[1]*JfL[33])+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[39]+jacobgeo_rat_surfL[1]*JfL[32])+4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[38]+jacobgeo_rat_surfL[0]*JfL[37]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[35]+jacobgeo_rat_surfL[0]*JfL[34])); + JRatfL[18] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[43]+jacobgeo_rat_surfL[2]*JfL[33])+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[39]+jacobgeo_rat_surfL[2]*JfL[32])+4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[38]+jacobgeo_rat_surfL[3]*JfL[37]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[35]+jacobgeo_rat_surfL[3]*JfL[34])); + JRatfL[19] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[47]+jacobgeo_rat_surfL[0]*JfL[40])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[42]+jacobgeo_rat_surfL[1]*JfL[41]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[46]+jacobgeo_rat_surfL[0]*JfL[36])+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[45]+jacobgeo_rat_surfL[1]*JfL[44])); + JRatfL[20] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[43]+jacobgeo_rat_surfL[3]*JfL[33])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[35]+jacobgeo_rat_surfL[2]*JfL[34]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[39]+jacobgeo_rat_surfL[3]*JfL[32])+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[38]+jacobgeo_rat_surfL[2]*JfL[37])); + JRatfL[21] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[47]+jacobgeo_rat_surfL[1]*JfL[40])+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[46]+jacobgeo_rat_surfL[1]*JfL[36])+4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[45]+jacobgeo_rat_surfL[0]*JfL[44]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[42]+jacobgeo_rat_surfL[0]*JfL[41])); + 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 *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*JfR[36]+0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*JfR[36]-0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1.c new file mode 100644 index 0000000000..d145fcb87e --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1.c @@ -0,0 +1,230 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[2])*q_+vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[2])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[3])*q_+vmap[2]*(bmag[1]-1.7320508075688772*bmag[3]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (bmag[0]-1.7320508075688772*bmag[2])*vmap[3]; + hamil[5] = (bmag[1]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double JRatfL[12] = {0.}; + JRatfL[0] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[5]+jacobgeo_rat_surfL[0]*JfL[2])+JfL[1]*jacobgeo_rat_surfL[1]+JfL[0]*jacobgeo_rat_surfL[0]); + JRatfL[1] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[5]+jacobgeo_rat_surfL[1]*JfL[2])+JfL[0]*jacobgeo_rat_surfL[1]+jacobgeo_rat_surfL[0]*JfL[1]); + JRatfL[2] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[11]+jacobgeo_rat_surfL[0]*JfL[7])+jacobgeo_rat_surfL[1]*JfL[6]+jacobgeo_rat_surfL[0]*JfL[3]); + JRatfL[3] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[12]+jacobgeo_rat_surfL[0]*JfL[9])+jacobgeo_rat_surfL[1]*JfL[8]+jacobgeo_rat_surfL[0]*JfL[4]); + JRatfL[4] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[11]+jacobgeo_rat_surfL[1]*JfL[7])+jacobgeo_rat_surfL[0]*JfL[6]+jacobgeo_rat_surfL[1]*JfL[3]); + JRatfL[5] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[12]+jacobgeo_rat_surfL[1]*JfL[9])+jacobgeo_rat_surfL[0]*JfL[8]+jacobgeo_rat_surfL[1]*JfL[4]); + JRatfL[6] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[15]+jacobgeo_rat_surfL[0]*JfL[14])+jacobgeo_rat_surfL[1]*JfL[13]+jacobgeo_rat_surfL[0]*JfL[10]); + JRatfL[7] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[15]+jacobgeo_rat_surfL[1]*JfL[14])+jacobgeo_rat_surfL[0]*JfL[13]+jacobgeo_rat_surfL[1]*JfL[10]); + JRatfL[8] = 0.03333333333333333*(25.980762113533157*jacobgeo_rat_surfL[1]*JfL[20]+8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[18]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[17])+15.0*jacobgeo_rat_surfL[0]*JfL[16]); + JRatfL[9] = 0.03333333333333333*(8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[20]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[16])+25.980762113533157*jacobgeo_rat_surfL[1]*JfL[18]+15.0*jacobgeo_rat_surfL[0]*JfL[17]); + 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 *flux_surf_nodal = &flux_surf[12]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.4841229182759271*JfR[22]-0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.4841229182759271*JfR[22]+0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.4841229182759271*(JfR[23]+JfR[22]))+0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*(JfR[12]+JfR[9])-0.25*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.4841229182759271*(JfR[23]+JfR[22])-0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*(JfR[12]+JfR[9])+0.25*JfR[8]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1.c new file mode 100644 index 0000000000..20b2a9a8c2 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1.c @@ -0,0 +1,399 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[2]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+bmag[0]*vmap[2]; + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[4])*q_+bmag[1]*vmap[2]; + hamil[2] = (1.4142135623730951*phi[3]-2.4494897427831783*phi[6])*q_+vmap[2]*bmag[3]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = bmag[0]*vmap[3]; + hamil[5] = (1.4142135623730951*phi[5]-2.4494897427831783*phi[7])*q_+vmap[2]*bmag[5]; + hamil[8] = bmag[1]*vmap[3]; + hamil[9] = bmag[3]*vmap[3]; + hamil[12] = vmap[3]*bmag[5]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfL[24] = {0.}; + JRatfL[0] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[16]+jacobgeo_rat_surfL[2]*JfL[8]+jacobgeo_rat_surfL[1]*JfL[6]+jacobgeo_rat_surfL[0]*JfL[2])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[7]+jacobgeo_rat_surfL[2]*JfL[3]+JfL[1]*jacobgeo_rat_surfL[1]+JfL[0]*jacobgeo_rat_surfL[0])); + JRatfL[1] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[16]+jacobgeo_rat_surfL[3]*JfL[8]+jacobgeo_rat_surfL[0]*JfL[6]+jacobgeo_rat_surfL[1]*JfL[2])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[7]+JfL[3]*jacobgeo_rat_surfL[3]+JfL[0]*jacobgeo_rat_surfL[1]+jacobgeo_rat_surfL[0]*JfL[1])); + JRatfL[2] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[16]+jacobgeo_rat_surfL[0]*JfL[8]+jacobgeo_rat_surfL[3]*JfL[6]+JfL[2]*jacobgeo_rat_surfL[2])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[7]+JfL[1]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[0]*JfL[3]+JfL[0]*jacobgeo_rat_surfL[2])); + JRatfL[3] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[26]+jacobgeo_rat_surfL[2]*JfL[19]+jacobgeo_rat_surfL[1]*JfL[17]+jacobgeo_rat_surfL[0]*JfL[10])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[18]+jacobgeo_rat_surfL[2]*JfL[11]+jacobgeo_rat_surfL[1]*JfL[9]+jacobgeo_rat_surfL[0]*JfL[4])); + JRatfL[4] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[27]+jacobgeo_rat_surfL[2]*JfL[22]+jacobgeo_rat_surfL[1]*JfL[20]+jacobgeo_rat_surfL[0]*JfL[13])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[21]+jacobgeo_rat_surfL[2]*JfL[14]+jacobgeo_rat_surfL[1]*JfL[12]+jacobgeo_rat_surfL[0]*JfL[5])); + JRatfL[5] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[16]+jacobgeo_rat_surfL[1]*JfL[8]+jacobgeo_rat_surfL[2]*JfL[6]+JfL[2]*jacobgeo_rat_surfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[7]+JfL[0]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[1]*JfL[3]+JfL[1]*jacobgeo_rat_surfL[2])); + JRatfL[6] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[26]+jacobgeo_rat_surfL[3]*JfL[19]+jacobgeo_rat_surfL[0]*JfL[17]+jacobgeo_rat_surfL[1]*JfL[10])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[18]+jacobgeo_rat_surfL[3]*JfL[11]+jacobgeo_rat_surfL[0]*JfL[9]+jacobgeo_rat_surfL[1]*JfL[4])); + JRatfL[7] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[26]+jacobgeo_rat_surfL[0]*JfL[19]+jacobgeo_rat_surfL[3]*JfL[17]+jacobgeo_rat_surfL[2]*JfL[10])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[18]+jacobgeo_rat_surfL[0]*JfL[11]+jacobgeo_rat_surfL[3]*JfL[9]+jacobgeo_rat_surfL[2]*JfL[4])); + JRatfL[8] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[27]+jacobgeo_rat_surfL[3]*JfL[22]+jacobgeo_rat_surfL[0]*JfL[20]+jacobgeo_rat_surfL[1]*JfL[13])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[21]+jacobgeo_rat_surfL[3]*JfL[14]+jacobgeo_rat_surfL[0]*JfL[12]+jacobgeo_rat_surfL[1]*JfL[5])); + JRatfL[9] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[27]+jacobgeo_rat_surfL[0]*JfL[22]+jacobgeo_rat_surfL[3]*JfL[20]+jacobgeo_rat_surfL[2]*JfL[13])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[21]+jacobgeo_rat_surfL[0]*JfL[14]+jacobgeo_rat_surfL[3]*JfL[12]+jacobgeo_rat_surfL[2]*JfL[5])); + JRatfL[10] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[31]+jacobgeo_rat_surfL[2]*JfL[30]+jacobgeo_rat_surfL[1]*JfL[28]+jacobgeo_rat_surfL[0]*JfL[24])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[29]+jacobgeo_rat_surfL[2]*JfL[25]+jacobgeo_rat_surfL[1]*JfL[23]+jacobgeo_rat_surfL[0]*JfL[15])); + JRatfL[11] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[26]+jacobgeo_rat_surfL[1]*JfL[19]+jacobgeo_rat_surfL[2]*JfL[17]+jacobgeo_rat_surfL[3]*JfL[10])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[18]+jacobgeo_rat_surfL[1]*JfL[11]+jacobgeo_rat_surfL[2]*JfL[9]+jacobgeo_rat_surfL[3]*JfL[4])); + JRatfL[12] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[27]+jacobgeo_rat_surfL[1]*JfL[22]+jacobgeo_rat_surfL[2]*JfL[20]+jacobgeo_rat_surfL[3]*JfL[13])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[21]+jacobgeo_rat_surfL[1]*JfL[14]+jacobgeo_rat_surfL[2]*JfL[12]+jacobgeo_rat_surfL[3]*JfL[5])); + JRatfL[13] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[31]+jacobgeo_rat_surfL[3]*JfL[30]+jacobgeo_rat_surfL[0]*JfL[28]+jacobgeo_rat_surfL[1]*JfL[24])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[29]+jacobgeo_rat_surfL[3]*JfL[25]+jacobgeo_rat_surfL[0]*JfL[23]+jacobgeo_rat_surfL[1]*JfL[15])); + JRatfL[14] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[31]+jacobgeo_rat_surfL[0]*JfL[30]+jacobgeo_rat_surfL[3]*JfL[28]+jacobgeo_rat_surfL[2]*JfL[24])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[29]+jacobgeo_rat_surfL[0]*JfL[25]+jacobgeo_rat_surfL[3]*JfL[23]+jacobgeo_rat_surfL[2]*JfL[15])); + JRatfL[15] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[31]+jacobgeo_rat_surfL[1]*JfL[30]+jacobgeo_rat_surfL[2]*JfL[28]+jacobgeo_rat_surfL[3]*JfL[24])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[29]+jacobgeo_rat_surfL[1]*JfL[25]+jacobgeo_rat_surfL[2]*JfL[23]+jacobgeo_rat_surfL[3]*JfL[15])); + JRatfL[16] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[43]+jacobgeo_rat_surfL[0]*JfL[34])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[35]+jacobgeo_rat_surfL[1]*JfL[33]))+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[39]+jacobgeo_rat_surfL[1]*JfL[37])+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[38]+jacobgeo_rat_surfL[0]*JfL[32])); + JRatfL[17] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[43]+jacobgeo_rat_surfL[1]*JfL[34])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[39]+jacobgeo_rat_surfL[0]*JfL[37])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[38]+jacobgeo_rat_surfL[1]*JfL[32]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[35]+jacobgeo_rat_surfL[0]*JfL[33])); + JRatfL[18] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[43]+jacobgeo_rat_surfL[2]*JfL[34])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[39]+jacobgeo_rat_surfL[3]*JfL[37])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[38]+jacobgeo_rat_surfL[2]*JfL[32]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[35]+jacobgeo_rat_surfL[3]*JfL[33])); + JRatfL[19] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[47]+jacobgeo_rat_surfL[0]*JfL[41])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[42]+jacobgeo_rat_surfL[1]*JfL[40]))+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[46]+jacobgeo_rat_surfL[1]*JfL[44])+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[45]+jacobgeo_rat_surfL[0]*JfL[36])); + JRatfL[20] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[43]+jacobgeo_rat_surfL[3]*JfL[34])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[35]+jacobgeo_rat_surfL[2]*JfL[33]))+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[39]+jacobgeo_rat_surfL[2]*JfL[37])+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[38]+jacobgeo_rat_surfL[3]*JfL[32])); + JRatfL[21] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[47]+jacobgeo_rat_surfL[1]*JfL[41])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[46]+jacobgeo_rat_surfL[0]*JfL[44])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[45]+jacobgeo_rat_surfL[1]*JfL[36]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[42]+jacobgeo_rat_surfL[0]*JfL[40])); + 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 *flux_surf_nodal = &flux_surf[24]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdy2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1.c new file mode 100644 index 0000000000..f708659280 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1.c @@ -0,0 +1,397 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[3]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+vmap[2]*(bmag[0]-1.7320508075688772*bmag[3]); + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[5])*q_+vmap[2]*(bmag[1]-1.7320508075688772*bmag[5]); + hamil[2] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[6])*q_; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (bmag[0]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[5] = (1.4142135623730951*phi[4]-2.4494897427831783*phi[7])*q_; + hamil[8] = vmap[3]*(bmag[1]-1.7320508075688772*bmag[5]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfL[24] = {0.}; + JRatfL[0] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[16]+jacobgeo_rat_surfL[2]*JfL[8]+jacobgeo_rat_surfL[1]*JfL[7]+jacobgeo_rat_surfL[0]*JfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[6]+JfL[2]*jacobgeo_rat_surfL[2]+JfL[1]*jacobgeo_rat_surfL[1]+JfL[0]*jacobgeo_rat_surfL[0])); + JRatfL[1] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[16]+jacobgeo_rat_surfL[3]*JfL[8]+jacobgeo_rat_surfL[0]*JfL[7]+jacobgeo_rat_surfL[1]*JfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[6]+JfL[2]*jacobgeo_rat_surfL[3]+JfL[0]*jacobgeo_rat_surfL[1]+jacobgeo_rat_surfL[0]*JfL[1])); + JRatfL[2] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[16]+jacobgeo_rat_surfL[0]*JfL[8]+jacobgeo_rat_surfL[3]*JfL[7]+jacobgeo_rat_surfL[2]*JfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[6]+JfL[1]*jacobgeo_rat_surfL[3]+JfL[0]*jacobgeo_rat_surfL[2]+jacobgeo_rat_surfL[0]*JfL[2])); + JRatfL[3] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[26]+jacobgeo_rat_surfL[2]*JfL[19]+jacobgeo_rat_surfL[1]*JfL[18]+jacobgeo_rat_surfL[0]*JfL[11])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[17]+jacobgeo_rat_surfL[2]*JfL[10]+jacobgeo_rat_surfL[1]*JfL[9]+jacobgeo_rat_surfL[0]*JfL[4])); + JRatfL[4] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[27]+jacobgeo_rat_surfL[2]*JfL[22]+jacobgeo_rat_surfL[1]*JfL[21]+jacobgeo_rat_surfL[0]*JfL[14])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[20]+jacobgeo_rat_surfL[2]*JfL[13]+jacobgeo_rat_surfL[1]*JfL[12]+jacobgeo_rat_surfL[0]*JfL[5])); + JRatfL[5] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[16]+jacobgeo_rat_surfL[1]*JfL[8]+jacobgeo_rat_surfL[2]*JfL[7]+JfL[3]*jacobgeo_rat_surfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[6]+JfL[0]*jacobgeo_rat_surfL[3]+JfL[1]*jacobgeo_rat_surfL[2]+jacobgeo_rat_surfL[1]*JfL[2])); + JRatfL[6] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[26]+jacobgeo_rat_surfL[3]*JfL[19]+jacobgeo_rat_surfL[0]*JfL[18]+jacobgeo_rat_surfL[1]*JfL[11])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[17]+jacobgeo_rat_surfL[3]*JfL[10]+jacobgeo_rat_surfL[0]*JfL[9]+jacobgeo_rat_surfL[1]*JfL[4])); + JRatfL[7] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[26]+jacobgeo_rat_surfL[0]*JfL[19]+jacobgeo_rat_surfL[3]*JfL[18]+jacobgeo_rat_surfL[2]*JfL[11])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[17]+jacobgeo_rat_surfL[0]*JfL[10]+jacobgeo_rat_surfL[3]*JfL[9]+jacobgeo_rat_surfL[2]*JfL[4])); + JRatfL[8] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[27]+jacobgeo_rat_surfL[3]*JfL[22]+jacobgeo_rat_surfL[0]*JfL[21]+jacobgeo_rat_surfL[1]*JfL[14])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[20]+jacobgeo_rat_surfL[3]*JfL[13]+jacobgeo_rat_surfL[0]*JfL[12]+jacobgeo_rat_surfL[1]*JfL[5])); + JRatfL[9] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[27]+jacobgeo_rat_surfL[0]*JfL[22]+jacobgeo_rat_surfL[3]*JfL[21]+jacobgeo_rat_surfL[2]*JfL[14])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[20]+jacobgeo_rat_surfL[0]*JfL[13]+jacobgeo_rat_surfL[3]*JfL[12]+jacobgeo_rat_surfL[2]*JfL[5])); + JRatfL[10] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[31]+jacobgeo_rat_surfL[2]*JfL[30]+jacobgeo_rat_surfL[1]*JfL[29]+jacobgeo_rat_surfL[0]*JfL[25])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[28]+jacobgeo_rat_surfL[2]*JfL[24]+jacobgeo_rat_surfL[1]*JfL[23]+jacobgeo_rat_surfL[0]*JfL[15])); + JRatfL[11] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[26]+jacobgeo_rat_surfL[1]*JfL[19]+jacobgeo_rat_surfL[2]*JfL[18]+jacobgeo_rat_surfL[3]*JfL[11])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[17]+jacobgeo_rat_surfL[1]*JfL[10]+jacobgeo_rat_surfL[2]*JfL[9]+jacobgeo_rat_surfL[3]*JfL[4])); + JRatfL[12] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[27]+jacobgeo_rat_surfL[1]*JfL[22]+jacobgeo_rat_surfL[2]*JfL[21]+jacobgeo_rat_surfL[3]*JfL[14])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[20]+jacobgeo_rat_surfL[1]*JfL[13]+jacobgeo_rat_surfL[2]*JfL[12]+jacobgeo_rat_surfL[3]*JfL[5])); + JRatfL[13] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[31]+jacobgeo_rat_surfL[3]*JfL[30]+jacobgeo_rat_surfL[0]*JfL[29]+jacobgeo_rat_surfL[1]*JfL[25])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[28]+jacobgeo_rat_surfL[3]*JfL[24]+jacobgeo_rat_surfL[0]*JfL[23]+jacobgeo_rat_surfL[1]*JfL[15])); + JRatfL[14] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[31]+jacobgeo_rat_surfL[0]*JfL[30]+jacobgeo_rat_surfL[3]*JfL[29]+jacobgeo_rat_surfL[2]*JfL[25])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[28]+jacobgeo_rat_surfL[0]*JfL[24]+jacobgeo_rat_surfL[3]*JfL[23]+jacobgeo_rat_surfL[2]*JfL[15])); + JRatfL[15] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[31]+jacobgeo_rat_surfL[1]*JfL[30]+jacobgeo_rat_surfL[2]*JfL[29]+jacobgeo_rat_surfL[3]*JfL[25])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[28]+jacobgeo_rat_surfL[1]*JfL[24]+jacobgeo_rat_surfL[2]*JfL[23]+jacobgeo_rat_surfL[3]*JfL[15])); + JRatfL[16] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[43]+jacobgeo_rat_surfL[0]*JfL[35])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[34]+jacobgeo_rat_surfL[1]*JfL[33]))+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[39]+jacobgeo_rat_surfL[1]*JfL[38])+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[37]+jacobgeo_rat_surfL[0]*JfL[32])); + JRatfL[17] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[43]+jacobgeo_rat_surfL[1]*JfL[35])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[39]+jacobgeo_rat_surfL[0]*JfL[38])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[37]+jacobgeo_rat_surfL[1]*JfL[32]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[34]+jacobgeo_rat_surfL[0]*JfL[33])); + JRatfL[18] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[43]+jacobgeo_rat_surfL[2]*JfL[35])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[39]+jacobgeo_rat_surfL[3]*JfL[38])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[37]+jacobgeo_rat_surfL[2]*JfL[32]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[34]+jacobgeo_rat_surfL[3]*JfL[33])); + JRatfL[19] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[47]+jacobgeo_rat_surfL[0]*JfL[42])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[41]+jacobgeo_rat_surfL[1]*JfL[40]))+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[46]+jacobgeo_rat_surfL[1]*JfL[45])+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[44]+jacobgeo_rat_surfL[0]*JfL[36])); + JRatfL[20] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[43]+jacobgeo_rat_surfL[3]*JfL[35])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[34]+jacobgeo_rat_surfL[2]*JfL[33]))+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[39]+jacobgeo_rat_surfL[2]*JfL[38])+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[37]+jacobgeo_rat_surfL[3]*JfL[32])); + JRatfL[21] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[47]+jacobgeo_rat_surfL[1]*JfL[42])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[46]+jacobgeo_rat_surfL[0]*JfL[45])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[44]+jacobgeo_rat_surfL[1]*JfL[36]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[41]+jacobgeo_rat_surfL[0]*JfL[40])); + 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 *flux_surf_nodal = &flux_surf[48]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1.c new file mode 100644 index 0000000000..92c1484678 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1.c @@ -0,0 +1,192 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (2.4494897427831783*phi[1]+1.4142135623730951*phi[0])*q_+vmapSq[0]*m_+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[3]+1.4142135623730951*phi[2])*q_+vmap[2]*(1.7320508075688772*bmag[3]+bmag[2]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[5] = (1.7320508075688772*bmag[3]+bmag[2])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]-0.4841229182759271*(JfR[21]+JfR[20])+0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]+0.4330127018922193*(JfR[8]+JfR[5])-0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]+0.4841229182759271*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]-0.4841229182759271*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]-0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]+0.4841229182759271*(JfR[21]+JfR[20])-0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]-0.4330127018922193*(JfR[8]+JfR[5])+0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1.c new file mode 100644 index 0000000000..236d9d116b --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1.c @@ -0,0 +1,323 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[1]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[4]+1.4142135623730951*phi[2])*q_; + hamil[2] = (2.4494897427831783*phi[5]+1.4142135623730951*phi[3])*q_+vmap[2]*(1.7320508075688772*bmag[5]+bmag[3]); + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[6])*q_; + hamil[9] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[3]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*JfR[36]+0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*JfR[36]-0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1.c new file mode 100644 index 0000000000..8a8c643afc --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1.c @@ -0,0 +1,192 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (2.4494897427831783*phi[2]+1.4142135623730951*phi[0])*q_+vmapSq[0]*m_+(1.7320508075688772*bmag[2]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[3]+1.4142135623730951*phi[1])*q_+vmap[2]*(1.7320508075688772*bmag[3]+bmag[1]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (1.7320508075688772*bmag[2]+bmag[0])*vmap[3]; + hamil[5] = (1.7320508075688772*bmag[3]+bmag[1])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[12]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.4841229182759271*JfR[22]-0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.4841229182759271*JfR[22]+0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.4841229182759271*(JfR[23]+JfR[22]))+0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*(JfR[12]+JfR[9])-0.25*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.4841229182759271*(JfR[23]+JfR[22])-0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*(JfR[12]+JfR[9])+0.25*JfR[8]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1.c new file mode 100644 index 0000000000..d780f7c162 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1.c @@ -0,0 +1,325 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[2]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+bmag[0]*vmap[2]; + hamil[1] = (2.4494897427831783*phi[4]+1.4142135623730951*phi[1])*q_+bmag[1]*vmap[2]; + hamil[2] = (2.4494897427831783*phi[6]+1.4142135623730951*phi[3])*q_+vmap[2]*bmag[3]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = bmag[0]*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[5])*q_+vmap[2]*bmag[5]; + hamil[8] = bmag[1]*vmap[3]; + hamil[9] = bmag[3]*vmap[3]; + hamil[12] = vmap[3]*bmag[5]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[24]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdy2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1.c new file mode 100644 index 0000000000..3897256920 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1.c @@ -0,0 +1,323 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[3]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+vmap[2]*(1.7320508075688772*bmag[3]+bmag[0]); + hamil[1] = (2.4494897427831783*phi[5]+1.4142135623730951*phi[1])*q_+vmap[2]*(1.7320508075688772*bmag[5]+bmag[1]); + hamil[2] = (2.4494897427831783*phi[6]+1.4142135623730951*phi[2])*q_; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (1.7320508075688772*bmag[3]+bmag[0])*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[4])*q_; + hamil[8] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[1]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[48]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1.c new file mode 100644 index 0000000000..ed70213a63 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1.c @@ -0,0 +1,206 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (2.4494897427831783*phi[1]+1.4142135623730951*phi[0])*q_+vmapSq[0]*m_+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[3]+1.4142135623730951*phi[2])*q_+vmap[2]*(1.7320508075688772*bmag[3]+bmag[2]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[5] = (1.7320508075688772*bmag[3]+bmag[2])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double JRatfR[12] = {0.}; + JRatfR[0] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[5]+jacobgeo_rat_surfR[0]*JfR[1])-1.0*(jacobgeo_rat_surfR[1]*JfR[2]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[5]+JfR[1]*jacobgeo_rat_surfR[1])-1.0*(jacobgeo_rat_surfR[0]*JfR[2]+JfR[0]*jacobgeo_rat_surfR[1]))); + JRatfR[2] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[11]+jacobgeo_rat_surfR[0]*JfR[6])-1.0*(jacobgeo_rat_surfR[1]*JfR[7]+jacobgeo_rat_surfR[0]*JfR[3]))); + JRatfR[3] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[12]+jacobgeo_rat_surfR[0]*JfR[8])-1.0*(jacobgeo_rat_surfR[1]*JfR[9]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[11]+jacobgeo_rat_surfR[1]*JfR[6])-1.0*(jacobgeo_rat_surfR[0]*JfR[7]+jacobgeo_rat_surfR[1]*JfR[3]))); + JRatfR[5] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[12]+jacobgeo_rat_surfR[1]*JfR[8])-1.0*(jacobgeo_rat_surfR[0]*JfR[9]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[6] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[15]+jacobgeo_rat_surfR[0]*JfR[13])-1.0*(jacobgeo_rat_surfR[1]*JfR[14]+jacobgeo_rat_surfR[0]*JfR[10]))); + JRatfR[7] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[15]+jacobgeo_rat_surfR[1]*JfR[13])-1.0*(jacobgeo_rat_surfR[0]*JfR[14]+jacobgeo_rat_surfR[1]*JfR[10]))); + JRatfR[8] = 0.03333333333333333*(-(25.980762113533157*jacobgeo_rat_surfR[1]*JfR[20])+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[18]-3.0*jacobgeo_rat_surfR[0]*JfR[17])+15.0*jacobgeo_rat_surfR[0]*JfR[16]); + JRatfR[9] = 0.03333333333333333*(8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[16]-3.0*jacobgeo_rat_surfR[0]*JfR[20])+15.0*jacobgeo_rat_surfR[0]*JfR[18]-25.980762113533157*jacobgeo_rat_surfR[1]*JfR[17]); + 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 *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]-0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]-0.4743416490252568*JRatfR[7]+0.4743416490252568*JRatfR[6]+0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3952847075210473*JRatfR[11])+0.39528470752104733*(JRatfR[10]+JRatfR[9])-0.3952847075210473*JRatfR[8]+0.3535533905932737*JRatfR[5]-0.3535533905932737*(JRatfR[3]+JRatfR[1])+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]-0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]+0.4743416490252568*JRatfR[7]-0.4743416490252568*JRatfR[6]+0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])+0.31622776601683794*JRatfR[10]-0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]+0.4743416490252568*JRatfR[7]-0.4743416490252568*JRatfR[6]-0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3952847075210473*JRatfR[11]-0.39528470752104733*JRatfR[10]+0.39528470752104733*JRatfR[9]-0.3952847075210473*JRatfR[8]-0.3535533905932737*JRatfR[5]+0.3535533905932737*JRatfR[3]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])+0.31622776601683794*JRatfR[10]-0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]-0.4743416490252568*JRatfR[7]+0.4743416490252568*JRatfR[6]-0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])-0.31622776601683794*JRatfR[10]+0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]+0.4743416490252568*(JRatfR[7]+JRatfR[6])-0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3952847075210473*JRatfR[11]+0.39528470752104733*JRatfR[10]-0.39528470752104733*JRatfR[9]-0.3952847075210473*JRatfR[8]-0.3535533905932737*(JRatfR[5]+JRatfR[3])+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])-0.31622776601683794*JRatfR[10]+0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]-0.4743416490252568*(JRatfR[7]+JRatfR[6])-0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]+0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]-0.4743416490252568*(JRatfR[7]+JRatfR[6])+0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3952847075210473*JRatfR[11])-0.39528470752104733*(JRatfR[10]+JRatfR[9])-0.3952847075210473*JRatfR[8]+0.3535533905932737*(JRatfR[5]+JRatfR[3]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]+0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]+0.4743416490252568*(JRatfR[7]+JRatfR[6])+0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1.c new file mode 100644 index 0000000000..a8379b1fee --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1.c @@ -0,0 +1,349 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[1]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+(1.7320508075688772*bmag[1]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[4]+1.4142135623730951*phi[2])*q_; + hamil[2] = (2.4494897427831783*phi[5]+1.4142135623730951*phi[3])*q_+vmap[2]*(1.7320508075688772*bmag[5]+bmag[3]); + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[6])*q_; + hamil[9] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[3]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfR[24] = {0.}; + JRatfR[0] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[16]+jacobgeo_rat_surfR[2]*JfR[7]+jacobgeo_rat_surfR[1]*JfR[6]+jacobgeo_rat_surfR[0]*JfR[1])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[8]+jacobgeo_rat_surfR[2]*JfR[3]+jacobgeo_rat_surfR[1]*JfR[2]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[16]+jacobgeo_rat_surfR[3]*JfR[7]+jacobgeo_rat_surfR[0]*JfR[6]+JfR[1]*jacobgeo_rat_surfR[1])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[8]+JfR[3]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[0]*JfR[2]+JfR[0]*jacobgeo_rat_surfR[1]))); + JRatfR[2] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[16]+jacobgeo_rat_surfR[0]*JfR[7]+jacobgeo_rat_surfR[3]*JfR[6]+JfR[1]*jacobgeo_rat_surfR[2])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[8]+JfR[2]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[0]*JfR[3]+JfR[0]*jacobgeo_rat_surfR[2]))); + JRatfR[3] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[26]+jacobgeo_rat_surfR[2]*JfR[18]+jacobgeo_rat_surfR[1]*JfR[17]+jacobgeo_rat_surfR[0]*JfR[9])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[19]+jacobgeo_rat_surfR[2]*JfR[11]+jacobgeo_rat_surfR[1]*JfR[10]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[27]+jacobgeo_rat_surfR[2]*JfR[21]+jacobgeo_rat_surfR[1]*JfR[20]+jacobgeo_rat_surfR[0]*JfR[12])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[22]+jacobgeo_rat_surfR[2]*JfR[14]+jacobgeo_rat_surfR[1]*JfR[13]+jacobgeo_rat_surfR[0]*JfR[5]))); + JRatfR[5] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[16]+jacobgeo_rat_surfR[1]*JfR[7]+jacobgeo_rat_surfR[2]*JfR[6]+JfR[1]*jacobgeo_rat_surfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[8]+JfR[0]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[1]*JfR[3]+JfR[2]*jacobgeo_rat_surfR[2]))); + JRatfR[6] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[26]+jacobgeo_rat_surfR[3]*JfR[18]+jacobgeo_rat_surfR[0]*JfR[17]+jacobgeo_rat_surfR[1]*JfR[9])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[19]+jacobgeo_rat_surfR[3]*JfR[11]+jacobgeo_rat_surfR[0]*JfR[10]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[7] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[26]+jacobgeo_rat_surfR[0]*JfR[18]+jacobgeo_rat_surfR[3]*JfR[17]+jacobgeo_rat_surfR[2]*JfR[9])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[19]+jacobgeo_rat_surfR[0]*JfR[11]+jacobgeo_rat_surfR[3]*JfR[10]+jacobgeo_rat_surfR[2]*JfR[4]))); + JRatfR[8] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[27]+jacobgeo_rat_surfR[3]*JfR[21]+jacobgeo_rat_surfR[0]*JfR[20]+jacobgeo_rat_surfR[1]*JfR[12])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[22]+jacobgeo_rat_surfR[3]*JfR[14]+jacobgeo_rat_surfR[0]*JfR[13]+jacobgeo_rat_surfR[1]*JfR[5]))); + JRatfR[9] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[27]+jacobgeo_rat_surfR[0]*JfR[21]+jacobgeo_rat_surfR[3]*JfR[20]+jacobgeo_rat_surfR[2]*JfR[12])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[22]+jacobgeo_rat_surfR[0]*JfR[14]+jacobgeo_rat_surfR[3]*JfR[13]+jacobgeo_rat_surfR[2]*JfR[5]))); + JRatfR[10] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[31]+jacobgeo_rat_surfR[2]*JfR[29]+jacobgeo_rat_surfR[1]*JfR[28]+jacobgeo_rat_surfR[0]*JfR[23])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[30]+jacobgeo_rat_surfR[2]*JfR[25]+jacobgeo_rat_surfR[1]*JfR[24]+jacobgeo_rat_surfR[0]*JfR[15]))); + JRatfR[11] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[26]+jacobgeo_rat_surfR[1]*JfR[18]+jacobgeo_rat_surfR[2]*JfR[17]+jacobgeo_rat_surfR[3]*JfR[9])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[19]+jacobgeo_rat_surfR[1]*JfR[11]+jacobgeo_rat_surfR[2]*JfR[10]+jacobgeo_rat_surfR[3]*JfR[4]))); + JRatfR[12] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[27]+jacobgeo_rat_surfR[1]*JfR[21]+jacobgeo_rat_surfR[2]*JfR[20]+jacobgeo_rat_surfR[3]*JfR[12])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[22]+jacobgeo_rat_surfR[1]*JfR[14]+jacobgeo_rat_surfR[2]*JfR[13]+jacobgeo_rat_surfR[3]*JfR[5]))); + JRatfR[13] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[31]+jacobgeo_rat_surfR[3]*JfR[29]+jacobgeo_rat_surfR[0]*JfR[28]+jacobgeo_rat_surfR[1]*JfR[23])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[30]+jacobgeo_rat_surfR[3]*JfR[25]+jacobgeo_rat_surfR[0]*JfR[24]+jacobgeo_rat_surfR[1]*JfR[15]))); + JRatfR[14] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[31]+jacobgeo_rat_surfR[0]*JfR[29]+jacobgeo_rat_surfR[3]*JfR[28]+jacobgeo_rat_surfR[2]*JfR[23])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[30]+jacobgeo_rat_surfR[0]*JfR[25]+jacobgeo_rat_surfR[3]*JfR[24]+jacobgeo_rat_surfR[2]*JfR[15]))); + JRatfR[15] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[31]+jacobgeo_rat_surfR[1]*JfR[29]+jacobgeo_rat_surfR[2]*JfR[28]+jacobgeo_rat_surfR[3]*JfR[23])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[30]+jacobgeo_rat_surfR[1]*JfR[25]+jacobgeo_rat_surfR[2]*JfR[24]+jacobgeo_rat_surfR[3]*JfR[15]))); + JRatfR[16] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[35]+jacobgeo_rat_surfR[1]*JfR[34])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[43]+jacobgeo_rat_surfR[0]*JfR[33]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[39]+jacobgeo_rat_surfR[0]*JfR[32])-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[38]+jacobgeo_rat_surfR[1]*JfR[37])); + JRatfR[17] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[43]+jacobgeo_rat_surfR[1]*JfR[33]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[39]+jacobgeo_rat_surfR[1]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[38]+jacobgeo_rat_surfR[0]*JfR[37]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[35]+jacobgeo_rat_surfR[0]*JfR[34])); + JRatfR[18] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[43]+jacobgeo_rat_surfR[2]*JfR[33]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[39]+jacobgeo_rat_surfR[2]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[38]+jacobgeo_rat_surfR[3]*JfR[37]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[35]+jacobgeo_rat_surfR[3]*JfR[34])); + JRatfR[19] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[42]+jacobgeo_rat_surfR[1]*JfR[41])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[47]+jacobgeo_rat_surfR[0]*JfR[40]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[46]+jacobgeo_rat_surfR[0]*JfR[36])-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[45]+jacobgeo_rat_surfR[1]*JfR[44])); + JRatfR[20] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[35]+jacobgeo_rat_surfR[2]*JfR[34])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[43]+jacobgeo_rat_surfR[3]*JfR[33]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[39]+jacobgeo_rat_surfR[3]*JfR[32])-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[38]+jacobgeo_rat_surfR[2]*JfR[37])); + JRatfR[21] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[47]+jacobgeo_rat_surfR[1]*JfR[40]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[46]+jacobgeo_rat_surfR[1]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[45]+jacobgeo_rat_surfR[0]*JfR[44]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[42]+jacobgeo_rat_surfR[0]*JfR[41])); + 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 *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*(JRatfR[9]+JRatfR[8]+JRatfR[5])-0.25*(JRatfR[4]+JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*(JRatfR[9]+JRatfR[8])+0.25*(JRatfR[5]+JRatfR[4])-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*JRatfR[18]+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.25*(JRatfR[5]+JRatfR[4])+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18])+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*JRatfR[9]-0.25*(JRatfR[8]+JRatfR[5])+0.25*(JRatfR[4]+JRatfR[2])-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18])-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9])-0.25*(JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2])+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*JRatfR[18]-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9])+0.25*JRatfR[8]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1.c new file mode 100644 index 0000000000..fd55d64a51 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1.c @@ -0,0 +1,206 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (2.4494897427831783*phi[2]+1.4142135623730951*phi[0])*q_+vmapSq[0]*m_+(1.7320508075688772*bmag[2]+bmag[0])*vmap[2]; + hamil[1] = (2.4494897427831783*phi[3]+1.4142135623730951*phi[1])*q_+vmap[2]*(1.7320508075688772*bmag[3]+bmag[1]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (1.7320508075688772*bmag[2]+bmag[0])*vmap[3]; + hamil[5] = (1.7320508075688772*bmag[3]+bmag[1])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double JRatfR[12] = {0.}; + JRatfR[0] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[5]+jacobgeo_rat_surfR[0]*JfR[2])-1.0*(JfR[1]*jacobgeo_rat_surfR[1]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[5]+jacobgeo_rat_surfR[1]*JfR[2])-1.0*(JfR[0]*jacobgeo_rat_surfR[1]+jacobgeo_rat_surfR[0]*JfR[1]))); + JRatfR[2] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[11]+jacobgeo_rat_surfR[0]*JfR[7])-1.0*(jacobgeo_rat_surfR[1]*JfR[6]+jacobgeo_rat_surfR[0]*JfR[3]))); + JRatfR[3] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[12]+jacobgeo_rat_surfR[0]*JfR[9])-1.0*(jacobgeo_rat_surfR[1]*JfR[8]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[11]+jacobgeo_rat_surfR[1]*JfR[7])-1.0*(jacobgeo_rat_surfR[0]*JfR[6]+jacobgeo_rat_surfR[1]*JfR[3]))); + JRatfR[5] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[12]+jacobgeo_rat_surfR[1]*JfR[9])-1.0*(jacobgeo_rat_surfR[0]*JfR[8]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[6] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[1]*JfR[15]+jacobgeo_rat_surfR[0]*JfR[14])-1.0*(jacobgeo_rat_surfR[1]*JfR[13]+jacobgeo_rat_surfR[0]*JfR[10]))); + JRatfR[7] = -(0.5*(1.7320508075688772*(jacobgeo_rat_surfR[0]*JfR[15]+jacobgeo_rat_surfR[1]*JfR[14])-1.0*(jacobgeo_rat_surfR[0]*JfR[13]+jacobgeo_rat_surfR[1]*JfR[10]))); + JRatfR[8] = 0.03333333333333333*(-(25.980762113533157*jacobgeo_rat_surfR[1]*JfR[20])+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[17]-3.0*jacobgeo_rat_surfR[0]*JfR[18])+15.0*jacobgeo_rat_surfR[0]*JfR[16]); + JRatfR[9] = 0.03333333333333333*(8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[16]-3.0*jacobgeo_rat_surfR[0]*JfR[20])-25.980762113533157*jacobgeo_rat_surfR[1]*JfR[18]+15.0*jacobgeo_rat_surfR[0]*JfR[17]); + 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 *flux_surf_nodal = &flux_surf[12]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.3162277660168379*JRatfR[11]-0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]-0.4743416490252568*JRatfR[7]+0.4743416490252568*JRatfR[6]+0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.3952847075210473*JRatfR[11])+0.39528470752104733*(JRatfR[10]+JRatfR[9])-0.3952847075210473*JRatfR[8]+0.3535533905932737*JRatfR[5]-0.3535533905932737*(JRatfR[3]+JRatfR[1])+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.3162277660168379*JRatfR[11]-0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]+0.4743416490252568*JRatfR[7]-0.4743416490252568*JRatfR[6]+0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])+0.31622776601683794*JRatfR[10]-0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]+0.4743416490252568*JRatfR[7]-0.4743416490252568*JRatfR[6]-0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.3952847075210473*JRatfR[11]-0.39528470752104733*JRatfR[10]+0.39528470752104733*JRatfR[9]-0.3952847075210473*JRatfR[8]-0.3535533905932737*JRatfR[5]+0.3535533905932737*JRatfR[3]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.3162277660168379*JRatfR[11])+0.31622776601683794*JRatfR[10]-0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]-0.4743416490252568*JRatfR[7]+0.4743416490252568*JRatfR[6]-0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]-0.3535533905932737*JRatfR[1]+0.3535533905932737*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = -(0.3162277660168379*JRatfR[11])-0.31622776601683794*JRatfR[10]+0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]+0.4743416490252568*(JRatfR[7]+JRatfR[6])-0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.3952847075210473*JRatfR[11]+0.39528470752104733*JRatfR[10]-0.39528470752104733*JRatfR[9]-0.3952847075210473*JRatfR[8]-0.3535533905932737*(JRatfR[5]+JRatfR[3])+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.3162277660168379*JRatfR[11])-0.31622776601683794*JRatfR[10]+0.31622776601683794*JRatfR[9]+0.3162277660168379*JRatfR[8]-0.4743416490252568*(JRatfR[7]+JRatfR[6])-0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]-0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.3162277660168379*JRatfR[11]+0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]-0.4743416490252568*(JRatfR[7]+JRatfR[6])+0.3535533905932737*JRatfR[5]-0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]-0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.3952847075210473*JRatfR[11])-0.39528470752104733*(JRatfR[10]+JRatfR[9])-0.3952847075210473*JRatfR[8]+0.3535533905932737*(JRatfR[5]+JRatfR[3]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.3162277660168379*JRatfR[11]+0.31622776601683794*(JRatfR[10]+JRatfR[9])+0.3162277660168379*JRatfR[8]+0.4743416490252568*(JRatfR[7]+JRatfR[6])+0.3535533905932737*JRatfR[5]+0.4743416490252568*JRatfR[4]+0.3535533905932737*JRatfR[3]+0.4743416490252568*JRatfR[2]+0.3535533905932737*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1.c new file mode 100644 index 0000000000..012b22e263 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1.c @@ -0,0 +1,351 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[2]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+bmag[0]*vmap[2]; + hamil[1] = (2.4494897427831783*phi[4]+1.4142135623730951*phi[1])*q_+bmag[1]*vmap[2]; + hamil[2] = (2.4494897427831783*phi[6]+1.4142135623730951*phi[3])*q_+vmap[2]*bmag[3]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = bmag[0]*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[5])*q_+vmap[2]*bmag[5]; + hamil[8] = bmag[1]*vmap[3]; + hamil[9] = bmag[3]*vmap[3]; + hamil[12] = vmap[3]*bmag[5]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfR[24] = {0.}; + JRatfR[0] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[16]+jacobgeo_rat_surfR[2]*JfR[8]+jacobgeo_rat_surfR[1]*JfR[6]+jacobgeo_rat_surfR[0]*JfR[2])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[7]+jacobgeo_rat_surfR[2]*JfR[3]+JfR[1]*jacobgeo_rat_surfR[1]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[16]+jacobgeo_rat_surfR[3]*JfR[8]+jacobgeo_rat_surfR[0]*JfR[6]+jacobgeo_rat_surfR[1]*JfR[2])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[7]+JfR[3]*jacobgeo_rat_surfR[3]+JfR[0]*jacobgeo_rat_surfR[1]+jacobgeo_rat_surfR[0]*JfR[1]))); + JRatfR[2] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[16]+jacobgeo_rat_surfR[0]*JfR[8]+jacobgeo_rat_surfR[3]*JfR[6]+JfR[2]*jacobgeo_rat_surfR[2])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[7]+JfR[1]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[0]*JfR[3]+JfR[0]*jacobgeo_rat_surfR[2]))); + JRatfR[3] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[26]+jacobgeo_rat_surfR[2]*JfR[19]+jacobgeo_rat_surfR[1]*JfR[17]+jacobgeo_rat_surfR[0]*JfR[10])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[18]+jacobgeo_rat_surfR[2]*JfR[11]+jacobgeo_rat_surfR[1]*JfR[9]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[27]+jacobgeo_rat_surfR[2]*JfR[22]+jacobgeo_rat_surfR[1]*JfR[20]+jacobgeo_rat_surfR[0]*JfR[13])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[21]+jacobgeo_rat_surfR[2]*JfR[14]+jacobgeo_rat_surfR[1]*JfR[12]+jacobgeo_rat_surfR[0]*JfR[5]))); + JRatfR[5] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[16]+jacobgeo_rat_surfR[1]*JfR[8]+jacobgeo_rat_surfR[2]*JfR[6]+JfR[2]*jacobgeo_rat_surfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[7]+JfR[0]*jacobgeo_rat_surfR[3]+jacobgeo_rat_surfR[1]*JfR[3]+JfR[1]*jacobgeo_rat_surfR[2]))); + JRatfR[6] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[26]+jacobgeo_rat_surfR[3]*JfR[19]+jacobgeo_rat_surfR[0]*JfR[17]+jacobgeo_rat_surfR[1]*JfR[10])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[18]+jacobgeo_rat_surfR[3]*JfR[11]+jacobgeo_rat_surfR[0]*JfR[9]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[7] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[26]+jacobgeo_rat_surfR[0]*JfR[19]+jacobgeo_rat_surfR[3]*JfR[17]+jacobgeo_rat_surfR[2]*JfR[10])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[18]+jacobgeo_rat_surfR[0]*JfR[11]+jacobgeo_rat_surfR[3]*JfR[9]+jacobgeo_rat_surfR[2]*JfR[4]))); + JRatfR[8] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[27]+jacobgeo_rat_surfR[3]*JfR[22]+jacobgeo_rat_surfR[0]*JfR[20]+jacobgeo_rat_surfR[1]*JfR[13])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[21]+jacobgeo_rat_surfR[3]*JfR[14]+jacobgeo_rat_surfR[0]*JfR[12]+jacobgeo_rat_surfR[1]*JfR[5]))); + JRatfR[9] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[27]+jacobgeo_rat_surfR[0]*JfR[22]+jacobgeo_rat_surfR[3]*JfR[20]+jacobgeo_rat_surfR[2]*JfR[13])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[21]+jacobgeo_rat_surfR[0]*JfR[14]+jacobgeo_rat_surfR[3]*JfR[12]+jacobgeo_rat_surfR[2]*JfR[5]))); + JRatfR[10] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[31]+jacobgeo_rat_surfR[2]*JfR[30]+jacobgeo_rat_surfR[1]*JfR[28]+jacobgeo_rat_surfR[0]*JfR[24])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[29]+jacobgeo_rat_surfR[2]*JfR[25]+jacobgeo_rat_surfR[1]*JfR[23]+jacobgeo_rat_surfR[0]*JfR[15]))); + JRatfR[11] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[26]+jacobgeo_rat_surfR[1]*JfR[19]+jacobgeo_rat_surfR[2]*JfR[17]+jacobgeo_rat_surfR[3]*JfR[10])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[18]+jacobgeo_rat_surfR[1]*JfR[11]+jacobgeo_rat_surfR[2]*JfR[9]+jacobgeo_rat_surfR[3]*JfR[4]))); + JRatfR[12] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[27]+jacobgeo_rat_surfR[1]*JfR[22]+jacobgeo_rat_surfR[2]*JfR[20]+jacobgeo_rat_surfR[3]*JfR[13])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[21]+jacobgeo_rat_surfR[1]*JfR[14]+jacobgeo_rat_surfR[2]*JfR[12]+jacobgeo_rat_surfR[3]*JfR[5]))); + JRatfR[13] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[31]+jacobgeo_rat_surfR[3]*JfR[30]+jacobgeo_rat_surfR[0]*JfR[28]+jacobgeo_rat_surfR[1]*JfR[24])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[29]+jacobgeo_rat_surfR[3]*JfR[25]+jacobgeo_rat_surfR[0]*JfR[23]+jacobgeo_rat_surfR[1]*JfR[15]))); + JRatfR[14] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[31]+jacobgeo_rat_surfR[0]*JfR[30]+jacobgeo_rat_surfR[3]*JfR[28]+jacobgeo_rat_surfR[2]*JfR[24])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[29]+jacobgeo_rat_surfR[0]*JfR[25]+jacobgeo_rat_surfR[3]*JfR[23]+jacobgeo_rat_surfR[2]*JfR[15]))); + JRatfR[15] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[31]+jacobgeo_rat_surfR[1]*JfR[30]+jacobgeo_rat_surfR[2]*JfR[28]+jacobgeo_rat_surfR[3]*JfR[24])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[29]+jacobgeo_rat_surfR[1]*JfR[25]+jacobgeo_rat_surfR[2]*JfR[23]+jacobgeo_rat_surfR[3]*JfR[15]))); + JRatfR[16] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[35]+jacobgeo_rat_surfR[1]*JfR[33])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[43]+jacobgeo_rat_surfR[0]*JfR[34]))-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[39]+jacobgeo_rat_surfR[1]*JfR[37])+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[38]+jacobgeo_rat_surfR[0]*JfR[32])); + JRatfR[17] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[43]+jacobgeo_rat_surfR[1]*JfR[34]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[38]+jacobgeo_rat_surfR[1]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[39]+jacobgeo_rat_surfR[0]*JfR[37]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[35]+jacobgeo_rat_surfR[0]*JfR[33])); + JRatfR[18] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[43]+jacobgeo_rat_surfR[2]*JfR[34]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[38]+jacobgeo_rat_surfR[2]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[39]+jacobgeo_rat_surfR[3]*JfR[37]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[35]+jacobgeo_rat_surfR[3]*JfR[33])); + JRatfR[19] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[42]+jacobgeo_rat_surfR[1]*JfR[40])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[47]+jacobgeo_rat_surfR[0]*JfR[41]))-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[46]+jacobgeo_rat_surfR[1]*JfR[44])+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[45]+jacobgeo_rat_surfR[0]*JfR[36])); + JRatfR[20] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[35]+jacobgeo_rat_surfR[2]*JfR[33])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[43]+jacobgeo_rat_surfR[3]*JfR[34]))-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[39]+jacobgeo_rat_surfR[2]*JfR[37])+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[38]+jacobgeo_rat_surfR[3]*JfR[32])); + JRatfR[21] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[47]+jacobgeo_rat_surfR[1]*JfR[41]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[45]+jacobgeo_rat_surfR[1]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[46]+jacobgeo_rat_surfR[0]*JfR[44]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[42]+jacobgeo_rat_surfR[0]*JfR[40])); + 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 *flux_surf_nodal = &flux_surf[24]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*(JRatfR[9]+JRatfR[8]+JRatfR[5])-0.25*(JRatfR[4]+JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*(JRatfR[9]+JRatfR[8])+0.25*(JRatfR[5]+JRatfR[4])-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*JRatfR[18]+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.25*(JRatfR[5]+JRatfR[4])+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18])+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*JRatfR[9]-0.25*(JRatfR[8]+JRatfR[5])+0.25*(JRatfR[4]+JRatfR[2])-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18])-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9])-0.25*(JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2])+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*JRatfR[18]-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9])+0.25*JRatfR[8]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdy2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1.c new file mode 100644 index 0000000000..34e8b51d8b --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1.c @@ -0,0 +1,349 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = 2.4494897427831783*phi[3]*q_+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+vmap[2]*(1.7320508075688772*bmag[3]+bmag[0]); + hamil[1] = (2.4494897427831783*phi[5]+1.4142135623730951*phi[1])*q_+vmap[2]*(1.7320508075688772*bmag[5]+bmag[1]); + hamil[2] = (2.4494897427831783*phi[6]+1.4142135623730951*phi[2])*q_; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (1.7320508075688772*bmag[3]+bmag[0])*vmap[3]; + hamil[5] = (2.4494897427831783*phi[7]+1.4142135623730951*phi[4])*q_; + hamil[8] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[1]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfR[24] = {0.}; + JRatfR[0] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[16]+jacobgeo_rat_surfR[2]*JfR[8]+jacobgeo_rat_surfR[1]*JfR[7]+jacobgeo_rat_surfR[0]*JfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[6]+JfR[2]*jacobgeo_rat_surfR[2]+JfR[1]*jacobgeo_rat_surfR[1]+JfR[0]*jacobgeo_rat_surfR[0]))); + JRatfR[1] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[16]+jacobgeo_rat_surfR[3]*JfR[8]+jacobgeo_rat_surfR[0]*JfR[7]+jacobgeo_rat_surfR[1]*JfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[6]+JfR[2]*jacobgeo_rat_surfR[3]+JfR[0]*jacobgeo_rat_surfR[1]+jacobgeo_rat_surfR[0]*JfR[1]))); + JRatfR[2] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[16]+jacobgeo_rat_surfR[0]*JfR[8]+jacobgeo_rat_surfR[3]*JfR[7]+jacobgeo_rat_surfR[2]*JfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[6]+JfR[1]*jacobgeo_rat_surfR[3]+JfR[0]*jacobgeo_rat_surfR[2]+jacobgeo_rat_surfR[0]*JfR[2]))); + JRatfR[3] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[26]+jacobgeo_rat_surfR[2]*JfR[19]+jacobgeo_rat_surfR[1]*JfR[18]+jacobgeo_rat_surfR[0]*JfR[11])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[17]+jacobgeo_rat_surfR[2]*JfR[10]+jacobgeo_rat_surfR[1]*JfR[9]+jacobgeo_rat_surfR[0]*JfR[4]))); + JRatfR[4] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[27]+jacobgeo_rat_surfR[2]*JfR[22]+jacobgeo_rat_surfR[1]*JfR[21]+jacobgeo_rat_surfR[0]*JfR[14])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[20]+jacobgeo_rat_surfR[2]*JfR[13]+jacobgeo_rat_surfR[1]*JfR[12]+jacobgeo_rat_surfR[0]*JfR[5]))); + JRatfR[5] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[16]+jacobgeo_rat_surfR[1]*JfR[8]+jacobgeo_rat_surfR[2]*JfR[7]+JfR[3]*jacobgeo_rat_surfR[3])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[6]+JfR[0]*jacobgeo_rat_surfR[3]+JfR[1]*jacobgeo_rat_surfR[2]+jacobgeo_rat_surfR[1]*JfR[2]))); + JRatfR[6] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[26]+jacobgeo_rat_surfR[3]*JfR[19]+jacobgeo_rat_surfR[0]*JfR[18]+jacobgeo_rat_surfR[1]*JfR[11])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[17]+jacobgeo_rat_surfR[3]*JfR[10]+jacobgeo_rat_surfR[0]*JfR[9]+jacobgeo_rat_surfR[1]*JfR[4]))); + JRatfR[7] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[26]+jacobgeo_rat_surfR[0]*JfR[19]+jacobgeo_rat_surfR[3]*JfR[18]+jacobgeo_rat_surfR[2]*JfR[11])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[17]+jacobgeo_rat_surfR[0]*JfR[10]+jacobgeo_rat_surfR[3]*JfR[9]+jacobgeo_rat_surfR[2]*JfR[4]))); + JRatfR[8] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[27]+jacobgeo_rat_surfR[3]*JfR[22]+jacobgeo_rat_surfR[0]*JfR[21]+jacobgeo_rat_surfR[1]*JfR[14])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[20]+jacobgeo_rat_surfR[3]*JfR[13]+jacobgeo_rat_surfR[0]*JfR[12]+jacobgeo_rat_surfR[1]*JfR[5]))); + JRatfR[9] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[27]+jacobgeo_rat_surfR[0]*JfR[22]+jacobgeo_rat_surfR[3]*JfR[21]+jacobgeo_rat_surfR[2]*JfR[14])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[20]+jacobgeo_rat_surfR[0]*JfR[13]+jacobgeo_rat_surfR[3]*JfR[12]+jacobgeo_rat_surfR[2]*JfR[5]))); + JRatfR[10] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[3]*JfR[31]+jacobgeo_rat_surfR[2]*JfR[30]+jacobgeo_rat_surfR[1]*JfR[29]+jacobgeo_rat_surfR[0]*JfR[25])-1.4142135623730951*(jacobgeo_rat_surfR[3]*JfR[28]+jacobgeo_rat_surfR[2]*JfR[24]+jacobgeo_rat_surfR[1]*JfR[23]+jacobgeo_rat_surfR[0]*JfR[15]))); + JRatfR[11] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[26]+jacobgeo_rat_surfR[1]*JfR[19]+jacobgeo_rat_surfR[2]*JfR[18]+jacobgeo_rat_surfR[3]*JfR[11])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[17]+jacobgeo_rat_surfR[1]*JfR[10]+jacobgeo_rat_surfR[2]*JfR[9]+jacobgeo_rat_surfR[3]*JfR[4]))); + JRatfR[12] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[27]+jacobgeo_rat_surfR[1]*JfR[22]+jacobgeo_rat_surfR[2]*JfR[21]+jacobgeo_rat_surfR[3]*JfR[14])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[20]+jacobgeo_rat_surfR[1]*JfR[13]+jacobgeo_rat_surfR[2]*JfR[12]+jacobgeo_rat_surfR[3]*JfR[5]))); + JRatfR[13] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[31]+jacobgeo_rat_surfR[3]*JfR[30]+jacobgeo_rat_surfR[0]*JfR[29]+jacobgeo_rat_surfR[1]*JfR[25])-1.4142135623730951*(jacobgeo_rat_surfR[2]*JfR[28]+jacobgeo_rat_surfR[3]*JfR[24]+jacobgeo_rat_surfR[0]*JfR[23]+jacobgeo_rat_surfR[1]*JfR[15]))); + JRatfR[14] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[31]+jacobgeo_rat_surfR[0]*JfR[30]+jacobgeo_rat_surfR[3]*JfR[29]+jacobgeo_rat_surfR[2]*JfR[25])-1.4142135623730951*(jacobgeo_rat_surfR[1]*JfR[28]+jacobgeo_rat_surfR[0]*JfR[24]+jacobgeo_rat_surfR[3]*JfR[23]+jacobgeo_rat_surfR[2]*JfR[15]))); + JRatfR[15] = -(0.25*(2.4494897427831783*(jacobgeo_rat_surfR[0]*JfR[31]+jacobgeo_rat_surfR[1]*JfR[30]+jacobgeo_rat_surfR[2]*JfR[29]+jacobgeo_rat_surfR[3]*JfR[25])-1.4142135623730951*(jacobgeo_rat_surfR[0]*JfR[28]+jacobgeo_rat_surfR[1]*JfR[24]+jacobgeo_rat_surfR[2]*JfR[23]+jacobgeo_rat_surfR[3]*JfR[15]))); + JRatfR[16] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[34]+jacobgeo_rat_surfR[1]*JfR[33])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[43]+jacobgeo_rat_surfR[0]*JfR[35]))-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[39]+jacobgeo_rat_surfR[1]*JfR[38])+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[37]+jacobgeo_rat_surfR[0]*JfR[32])); + JRatfR[17] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[43]+jacobgeo_rat_surfR[1]*JfR[35]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[37]+jacobgeo_rat_surfR[1]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[39]+jacobgeo_rat_surfR[0]*JfR[38]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[34]+jacobgeo_rat_surfR[0]*JfR[33])); + JRatfR[18] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[43]+jacobgeo_rat_surfR[2]*JfR[35]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[37]+jacobgeo_rat_surfR[2]*JfR[32])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[39]+jacobgeo_rat_surfR[3]*JfR[38]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[34]+jacobgeo_rat_surfR[3]*JfR[33])); + JRatfR[19] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[41]+jacobgeo_rat_surfR[1]*JfR[40])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[47]+jacobgeo_rat_surfR[0]*JfR[42]))-36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[46]+jacobgeo_rat_surfR[1]*JfR[45])+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[44]+jacobgeo_rat_surfR[0]*JfR[36])); + JRatfR[20] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[34]+jacobgeo_rat_surfR[2]*JfR[33])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[43]+jacobgeo_rat_surfR[3]*JfR[35]))-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[39]+jacobgeo_rat_surfR[2]*JfR[38])+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[37]+jacobgeo_rat_surfR[3]*JfR[32])); + JRatfR[21] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[2]*JfR[47]+jacobgeo_rat_surfR[1]*JfR[42]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[2]*JfR[44]+jacobgeo_rat_surfR[1]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[3]*JfR[46]+jacobgeo_rat_surfR[0]*JfR[45]))+21.213203435596427*(jacobgeo_rat_surfR[3]*JfR[41]+jacobgeo_rat_surfR[0]*JfR[40])); + 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 *flux_surf_nodal = &flux_surf[48]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*(JRatfR[9]+JRatfR[8]+JRatfR[5])-0.25*(JRatfR[4]+JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*(JRatfR[9]+JRatfR[8])+0.25*(JRatfR[5]+JRatfR[4])-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*(JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*(JRatfR[2]+JRatfR[1])+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.2795084971874738*JRatfR[23])+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*JRatfR[18]+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*JRatfR[12]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.25*(JRatfR[5]+JRatfR[4])+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.22360679774997894*JRatfR[23]-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*JRatfR[15]-0.33541019662496846*JRatfR[14]+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.2795084971874738*JRatfR[23]-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18])+0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*JRatfR[12]+0.25*JRatfR[9]-0.25*(JRatfR[8]+JRatfR[5])+0.25*(JRatfR[4]+JRatfR[2])-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.22360679774997894*JRatfR[23])+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*JRatfR[18]-0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*JRatfR[15]+0.33541019662496846*JRatfR[14]-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*JRatfR[2]-0.25*JRatfR[1]+0.25*JRatfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*JRatfR[22]+0.2795084971874737*(JRatfR[21]+JRatfR[20])+0.2795084971874738*(JRatfR[19]+JRatfR[18])-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9])-0.25*(JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2])+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*JRatfR[22]-0.22360679774997896*(JRatfR[21]+JRatfR[20])-0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*JRatfR[9]-0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14])-0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]+0.33541019662496846*JRatfR[7]-0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*JRatfR[22]-0.2795084971874737*JRatfR[21]+0.2795084971874737*JRatfR[20]-0.2795084971874738*JRatfR[19]+0.2795084971874738*JRatfR[18]-0.2795084971874738*JRatfR[17]-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9])+0.25*JRatfR[8]-0.25*JRatfR[5]+0.25*JRatfR[4]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*JRatfR[22]+0.22360679774997896*JRatfR[21]-0.22360679774997896*JRatfR[20]+0.22360679774997894*JRatfR[19]-0.22360679774997902*JRatfR[18]+0.22360679774997902*JRatfR[17]+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14])+0.33541019662496846*JRatfR[13]-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*JRatfR[9]+0.25*JRatfR[8]-0.33541019662496846*JRatfR[7]+0.33541019662496846*JRatfR[6]-0.25*JRatfR[5]+0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]-0.25*JRatfR[2]+0.25*(JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]-0.33541019662496846*JRatfR[11]+0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.2795084971874738*JRatfR[23]+0.2795084971874737*(JRatfR[22]+JRatfR[21])-0.2795084971874737*JRatfR[20]+0.2795084971874738*JRatfR[19]-0.2795084971874738*(JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]-0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.22360679774997894*JRatfR[23])-0.22360679774997896*(JRatfR[22]+JRatfR[21])+0.22360679774997896*JRatfR[20]-0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])-0.25*JRatfR[12]+0.33541019662496846*JRatfR[11]-0.33541019662496846*JRatfR[10]-0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*JRatfR[5]-0.25*JRatfR[4]+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]-0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]-0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])-0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])-0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.2795084971874738*JRatfR[23])-0.2795084971874737*(JRatfR[22]+JRatfR[21]+JRatfR[20])-0.2795084971874738*(JRatfR[19]+JRatfR[18]+JRatfR[17])-0.2795084971874737*JRatfR[16]+0.25*(JRatfR[12]+JRatfR[9]+JRatfR[8]+JRatfR[5]+JRatfR[4]+JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.22360679774997894*JRatfR[23]+0.22360679774997896*(JRatfR[22]+JRatfR[21]+JRatfR[20])+0.22360679774997894*JRatfR[19]+0.22360679774997902*(JRatfR[18]+JRatfR[17])+0.22360679774997896*JRatfR[16]+0.33541019662496846*(JRatfR[15]+JRatfR[14]+JRatfR[13])+0.25*JRatfR[12]+0.33541019662496846*(JRatfR[11]+JRatfR[10])+0.25*(JRatfR[9]+JRatfR[8])+0.33541019662496846*(JRatfR[7]+JRatfR[6])+0.25*(JRatfR[5]+JRatfR[4])+0.33541019662496846*JRatfR[3]+0.25*(JRatfR[2]+JRatfR[1]+JRatfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1.c new file mode 100644 index 0000000000..43866b33a1 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1.c @@ -0,0 +1,206 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[1])*q_+vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[3])*q_+vmap[2]*(bmag[2]-1.7320508075688772*bmag[3]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[5] = (bmag[2]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double JRatfL[12] = {0.}; + JRatfL[0] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[5]+jacobgeo_rat_surfL[0]*JfL[1])+jacobgeo_rat_surfL[1]*JfL[2]+JfL[0]*jacobgeo_rat_surfL[0]); + JRatfL[1] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[5]+JfL[1]*jacobgeo_rat_surfL[1])+jacobgeo_rat_surfL[0]*JfL[2]+JfL[0]*jacobgeo_rat_surfL[1]); + JRatfL[2] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[11]+jacobgeo_rat_surfL[0]*JfL[6])+jacobgeo_rat_surfL[1]*JfL[7]+jacobgeo_rat_surfL[0]*JfL[3]); + JRatfL[3] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[12]+jacobgeo_rat_surfL[0]*JfL[8])+jacobgeo_rat_surfL[1]*JfL[9]+jacobgeo_rat_surfL[0]*JfL[4]); + JRatfL[4] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[11]+jacobgeo_rat_surfL[1]*JfL[6])+jacobgeo_rat_surfL[0]*JfL[7]+jacobgeo_rat_surfL[1]*JfL[3]); + JRatfL[5] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[12]+jacobgeo_rat_surfL[1]*JfL[8])+jacobgeo_rat_surfL[0]*JfL[9]+jacobgeo_rat_surfL[1]*JfL[4]); + JRatfL[6] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[15]+jacobgeo_rat_surfL[0]*JfL[13])+jacobgeo_rat_surfL[1]*JfL[14]+jacobgeo_rat_surfL[0]*JfL[10]); + JRatfL[7] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[15]+jacobgeo_rat_surfL[1]*JfL[13])+jacobgeo_rat_surfL[0]*JfL[14]+jacobgeo_rat_surfL[1]*JfL[10]); + JRatfL[8] = 0.03333333333333333*(25.980762113533157*jacobgeo_rat_surfL[1]*JfL[20]+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[18]+3.0*jacobgeo_rat_surfL[0]*JfL[17])+15.0*jacobgeo_rat_surfL[0]*JfL[16]); + JRatfL[9] = 0.03333333333333333*(8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[20]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[16])+15.0*jacobgeo_rat_surfL[0]*JfL[18]+25.980762113533157*jacobgeo_rat_surfL[1]*JfL[17]); + 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 *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]-0.4841229182759271*(JfR[21]+JfR[20])+0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]+0.4330127018922193*(JfR[8]+JfR[5])-0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]+0.4841229182759271*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]-0.4841229182759271*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]-0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]+0.4841229182759271*(JfR[21]+JfR[20])-0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]-0.4330127018922193*(JfR[8]+JfR[5])+0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1.c new file mode 100644 index 0000000000..5398b50f5a --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1.c @@ -0,0 +1,349 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[1]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[4])*q_; + hamil[2] = (1.4142135623730951*phi[3]-2.4494897427831783*phi[5])*q_+vmap[2]*(bmag[3]-1.7320508075688772*bmag[5]); + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[5] = (1.4142135623730951*phi[6]-2.4494897427831783*phi[7])*q_; + hamil[9] = vmap[3]*(bmag[3]-1.7320508075688772*bmag[5]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfL[24] = {0.}; + JRatfL[0] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[16]+jacobgeo_rat_surfL[2]*JfL[7]+jacobgeo_rat_surfL[1]*JfL[6]+jacobgeo_rat_surfL[0]*JfL[1])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[8]+jacobgeo_rat_surfL[2]*JfL[3]+jacobgeo_rat_surfL[1]*JfL[2]+JfL[0]*jacobgeo_rat_surfL[0])); + JRatfL[1] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[16]+jacobgeo_rat_surfL[3]*JfL[7]+jacobgeo_rat_surfL[0]*JfL[6]+JfL[1]*jacobgeo_rat_surfL[1])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[8]+JfL[3]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[0]*JfL[2]+JfL[0]*jacobgeo_rat_surfL[1])); + JRatfL[2] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[16]+jacobgeo_rat_surfL[0]*JfL[7]+jacobgeo_rat_surfL[3]*JfL[6]+JfL[1]*jacobgeo_rat_surfL[2])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[8]+JfL[2]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[0]*JfL[3]+JfL[0]*jacobgeo_rat_surfL[2])); + JRatfL[3] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[26]+jacobgeo_rat_surfL[2]*JfL[18]+jacobgeo_rat_surfL[1]*JfL[17]+jacobgeo_rat_surfL[0]*JfL[9])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[19]+jacobgeo_rat_surfL[2]*JfL[11]+jacobgeo_rat_surfL[1]*JfL[10]+jacobgeo_rat_surfL[0]*JfL[4])); + JRatfL[4] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[27]+jacobgeo_rat_surfL[2]*JfL[21]+jacobgeo_rat_surfL[1]*JfL[20]+jacobgeo_rat_surfL[0]*JfL[12])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[22]+jacobgeo_rat_surfL[2]*JfL[14]+jacobgeo_rat_surfL[1]*JfL[13]+jacobgeo_rat_surfL[0]*JfL[5])); + JRatfL[5] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[16]+jacobgeo_rat_surfL[1]*JfL[7]+jacobgeo_rat_surfL[2]*JfL[6]+JfL[1]*jacobgeo_rat_surfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[8]+JfL[0]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[1]*JfL[3]+JfL[2]*jacobgeo_rat_surfL[2])); + JRatfL[6] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[26]+jacobgeo_rat_surfL[3]*JfL[18]+jacobgeo_rat_surfL[0]*JfL[17]+jacobgeo_rat_surfL[1]*JfL[9])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[19]+jacobgeo_rat_surfL[3]*JfL[11]+jacobgeo_rat_surfL[0]*JfL[10]+jacobgeo_rat_surfL[1]*JfL[4])); + JRatfL[7] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[26]+jacobgeo_rat_surfL[0]*JfL[18]+jacobgeo_rat_surfL[3]*JfL[17]+jacobgeo_rat_surfL[2]*JfL[9])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[19]+jacobgeo_rat_surfL[0]*JfL[11]+jacobgeo_rat_surfL[3]*JfL[10]+jacobgeo_rat_surfL[2]*JfL[4])); + JRatfL[8] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[27]+jacobgeo_rat_surfL[3]*JfL[21]+jacobgeo_rat_surfL[0]*JfL[20]+jacobgeo_rat_surfL[1]*JfL[12])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[22]+jacobgeo_rat_surfL[3]*JfL[14]+jacobgeo_rat_surfL[0]*JfL[13]+jacobgeo_rat_surfL[1]*JfL[5])); + JRatfL[9] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[27]+jacobgeo_rat_surfL[0]*JfL[21]+jacobgeo_rat_surfL[3]*JfL[20]+jacobgeo_rat_surfL[2]*JfL[12])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[22]+jacobgeo_rat_surfL[0]*JfL[14]+jacobgeo_rat_surfL[3]*JfL[13]+jacobgeo_rat_surfL[2]*JfL[5])); + JRatfL[10] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[31]+jacobgeo_rat_surfL[2]*JfL[29]+jacobgeo_rat_surfL[1]*JfL[28]+jacobgeo_rat_surfL[0]*JfL[23])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[30]+jacobgeo_rat_surfL[2]*JfL[25]+jacobgeo_rat_surfL[1]*JfL[24]+jacobgeo_rat_surfL[0]*JfL[15])); + JRatfL[11] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[26]+jacobgeo_rat_surfL[1]*JfL[18]+jacobgeo_rat_surfL[2]*JfL[17]+jacobgeo_rat_surfL[3]*JfL[9])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[19]+jacobgeo_rat_surfL[1]*JfL[11]+jacobgeo_rat_surfL[2]*JfL[10]+jacobgeo_rat_surfL[3]*JfL[4])); + JRatfL[12] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[27]+jacobgeo_rat_surfL[1]*JfL[21]+jacobgeo_rat_surfL[2]*JfL[20]+jacobgeo_rat_surfL[3]*JfL[12])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[22]+jacobgeo_rat_surfL[1]*JfL[14]+jacobgeo_rat_surfL[2]*JfL[13]+jacobgeo_rat_surfL[3]*JfL[5])); + JRatfL[13] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[31]+jacobgeo_rat_surfL[3]*JfL[29]+jacobgeo_rat_surfL[0]*JfL[28]+jacobgeo_rat_surfL[1]*JfL[23])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[30]+jacobgeo_rat_surfL[3]*JfL[25]+jacobgeo_rat_surfL[0]*JfL[24]+jacobgeo_rat_surfL[1]*JfL[15])); + JRatfL[14] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[31]+jacobgeo_rat_surfL[0]*JfL[29]+jacobgeo_rat_surfL[3]*JfL[28]+jacobgeo_rat_surfL[2]*JfL[23])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[30]+jacobgeo_rat_surfL[0]*JfL[25]+jacobgeo_rat_surfL[3]*JfL[24]+jacobgeo_rat_surfL[2]*JfL[15])); + JRatfL[15] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[31]+jacobgeo_rat_surfL[1]*JfL[29]+jacobgeo_rat_surfL[2]*JfL[28]+jacobgeo_rat_surfL[3]*JfL[23])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[30]+jacobgeo_rat_surfL[1]*JfL[25]+jacobgeo_rat_surfL[2]*JfL[24]+jacobgeo_rat_surfL[3]*JfL[15])); + JRatfL[16] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[43]+jacobgeo_rat_surfL[0]*JfL[33])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[35]+jacobgeo_rat_surfL[1]*JfL[34]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[39]+jacobgeo_rat_surfL[0]*JfL[32])+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[38]+jacobgeo_rat_surfL[1]*JfL[37])); + JRatfL[17] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[43]+jacobgeo_rat_surfL[1]*JfL[33])+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[39]+jacobgeo_rat_surfL[1]*JfL[32])+4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[38]+jacobgeo_rat_surfL[0]*JfL[37]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[35]+jacobgeo_rat_surfL[0]*JfL[34])); + JRatfL[18] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[43]+jacobgeo_rat_surfL[2]*JfL[33])+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[39]+jacobgeo_rat_surfL[2]*JfL[32])+4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[38]+jacobgeo_rat_surfL[3]*JfL[37]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[35]+jacobgeo_rat_surfL[3]*JfL[34])); + JRatfL[19] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[47]+jacobgeo_rat_surfL[0]*JfL[40])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[42]+jacobgeo_rat_surfL[1]*JfL[41]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[46]+jacobgeo_rat_surfL[0]*JfL[36])+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[45]+jacobgeo_rat_surfL[1]*JfL[44])); + JRatfL[20] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[43]+jacobgeo_rat_surfL[3]*JfL[33])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[35]+jacobgeo_rat_surfL[2]*JfL[34]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[39]+jacobgeo_rat_surfL[3]*JfL[32])+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[38]+jacobgeo_rat_surfL[2]*JfL[37])); + JRatfL[21] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[47]+jacobgeo_rat_surfL[1]*JfL[40])+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[46]+jacobgeo_rat_surfL[1]*JfL[36])+4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[45]+jacobgeo_rat_surfL[0]*JfL[44]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[42]+jacobgeo_rat_surfL[0]*JfL[41])); + 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 *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*JfR[36]+0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*JfR[36]-0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1.c new file mode 100644 index 0000000000..8a9f94a5f3 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1.c @@ -0,0 +1,206 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[2])*q_+vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[2])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[3])*q_+vmap[2]*(bmag[1]-1.7320508075688772*bmag[3]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (bmag[0]-1.7320508075688772*bmag[2])*vmap[3]; + hamil[5] = (bmag[1]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double JRatfL[12] = {0.}; + JRatfL[0] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[5]+jacobgeo_rat_surfL[0]*JfL[2])+JfL[1]*jacobgeo_rat_surfL[1]+JfL[0]*jacobgeo_rat_surfL[0]); + JRatfL[1] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[5]+jacobgeo_rat_surfL[1]*JfL[2])+JfL[0]*jacobgeo_rat_surfL[1]+jacobgeo_rat_surfL[0]*JfL[1]); + JRatfL[2] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[11]+jacobgeo_rat_surfL[0]*JfL[7])+jacobgeo_rat_surfL[1]*JfL[6]+jacobgeo_rat_surfL[0]*JfL[3]); + JRatfL[3] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[12]+jacobgeo_rat_surfL[0]*JfL[9])+jacobgeo_rat_surfL[1]*JfL[8]+jacobgeo_rat_surfL[0]*JfL[4]); + JRatfL[4] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[11]+jacobgeo_rat_surfL[1]*JfL[7])+jacobgeo_rat_surfL[0]*JfL[6]+jacobgeo_rat_surfL[1]*JfL[3]); + JRatfL[5] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[12]+jacobgeo_rat_surfL[1]*JfL[9])+jacobgeo_rat_surfL[0]*JfL[8]+jacobgeo_rat_surfL[1]*JfL[4]); + JRatfL[6] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[1]*JfL[15]+jacobgeo_rat_surfL[0]*JfL[14])+jacobgeo_rat_surfL[1]*JfL[13]+jacobgeo_rat_surfL[0]*JfL[10]); + JRatfL[7] = 0.5*(1.7320508075688772*(jacobgeo_rat_surfL[0]*JfL[15]+jacobgeo_rat_surfL[1]*JfL[14])+jacobgeo_rat_surfL[0]*JfL[13]+jacobgeo_rat_surfL[1]*JfL[10]); + JRatfL[8] = 0.03333333333333333*(25.980762113533157*jacobgeo_rat_surfL[1]*JfL[20]+8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[18]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[17])+15.0*jacobgeo_rat_surfL[0]*JfL[16]); + JRatfL[9] = 0.03333333333333333*(8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[20]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[16])+25.980762113533157*jacobgeo_rat_surfL[1]*JfL[18]+15.0*jacobgeo_rat_surfL[0]*JfL[17]); + 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 *flux_surf_nodal = &flux_surf[12]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.4841229182759271*JfR[22]-0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.4841229182759271*JfR[22]+0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.4841229182759271*(JfR[23]+JfR[22]))+0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*(JfR[12]+JfR[9])-0.25*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.4841229182759271*(JfR[23]+JfR[22])-0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*(JfR[12]+JfR[9])+0.25*JfR[8]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1.c new file mode 100644 index 0000000000..5441d7d138 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1.c @@ -0,0 +1,351 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[2]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+bmag[0]*vmap[2]; + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[4])*q_+bmag[1]*vmap[2]; + hamil[2] = (1.4142135623730951*phi[3]-2.4494897427831783*phi[6])*q_+vmap[2]*bmag[3]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = bmag[0]*vmap[3]; + hamil[5] = (1.4142135623730951*phi[5]-2.4494897427831783*phi[7])*q_+vmap[2]*bmag[5]; + hamil[8] = bmag[1]*vmap[3]; + hamil[9] = bmag[3]*vmap[3]; + hamil[12] = vmap[3]*bmag[5]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfL[24] = {0.}; + JRatfL[0] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[16]+jacobgeo_rat_surfL[2]*JfL[8]+jacobgeo_rat_surfL[1]*JfL[6]+jacobgeo_rat_surfL[0]*JfL[2])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[7]+jacobgeo_rat_surfL[2]*JfL[3]+JfL[1]*jacobgeo_rat_surfL[1]+JfL[0]*jacobgeo_rat_surfL[0])); + JRatfL[1] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[16]+jacobgeo_rat_surfL[3]*JfL[8]+jacobgeo_rat_surfL[0]*JfL[6]+jacobgeo_rat_surfL[1]*JfL[2])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[7]+JfL[3]*jacobgeo_rat_surfL[3]+JfL[0]*jacobgeo_rat_surfL[1]+jacobgeo_rat_surfL[0]*JfL[1])); + JRatfL[2] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[16]+jacobgeo_rat_surfL[0]*JfL[8]+jacobgeo_rat_surfL[3]*JfL[6]+JfL[2]*jacobgeo_rat_surfL[2])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[7]+JfL[1]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[0]*JfL[3]+JfL[0]*jacobgeo_rat_surfL[2])); + JRatfL[3] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[26]+jacobgeo_rat_surfL[2]*JfL[19]+jacobgeo_rat_surfL[1]*JfL[17]+jacobgeo_rat_surfL[0]*JfL[10])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[18]+jacobgeo_rat_surfL[2]*JfL[11]+jacobgeo_rat_surfL[1]*JfL[9]+jacobgeo_rat_surfL[0]*JfL[4])); + JRatfL[4] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[27]+jacobgeo_rat_surfL[2]*JfL[22]+jacobgeo_rat_surfL[1]*JfL[20]+jacobgeo_rat_surfL[0]*JfL[13])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[21]+jacobgeo_rat_surfL[2]*JfL[14]+jacobgeo_rat_surfL[1]*JfL[12]+jacobgeo_rat_surfL[0]*JfL[5])); + JRatfL[5] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[16]+jacobgeo_rat_surfL[1]*JfL[8]+jacobgeo_rat_surfL[2]*JfL[6]+JfL[2]*jacobgeo_rat_surfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[7]+JfL[0]*jacobgeo_rat_surfL[3]+jacobgeo_rat_surfL[1]*JfL[3]+JfL[1]*jacobgeo_rat_surfL[2])); + JRatfL[6] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[26]+jacobgeo_rat_surfL[3]*JfL[19]+jacobgeo_rat_surfL[0]*JfL[17]+jacobgeo_rat_surfL[1]*JfL[10])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[18]+jacobgeo_rat_surfL[3]*JfL[11]+jacobgeo_rat_surfL[0]*JfL[9]+jacobgeo_rat_surfL[1]*JfL[4])); + JRatfL[7] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[26]+jacobgeo_rat_surfL[0]*JfL[19]+jacobgeo_rat_surfL[3]*JfL[17]+jacobgeo_rat_surfL[2]*JfL[10])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[18]+jacobgeo_rat_surfL[0]*JfL[11]+jacobgeo_rat_surfL[3]*JfL[9]+jacobgeo_rat_surfL[2]*JfL[4])); + JRatfL[8] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[27]+jacobgeo_rat_surfL[3]*JfL[22]+jacobgeo_rat_surfL[0]*JfL[20]+jacobgeo_rat_surfL[1]*JfL[13])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[21]+jacobgeo_rat_surfL[3]*JfL[14]+jacobgeo_rat_surfL[0]*JfL[12]+jacobgeo_rat_surfL[1]*JfL[5])); + JRatfL[9] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[27]+jacobgeo_rat_surfL[0]*JfL[22]+jacobgeo_rat_surfL[3]*JfL[20]+jacobgeo_rat_surfL[2]*JfL[13])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[21]+jacobgeo_rat_surfL[0]*JfL[14]+jacobgeo_rat_surfL[3]*JfL[12]+jacobgeo_rat_surfL[2]*JfL[5])); + JRatfL[10] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[31]+jacobgeo_rat_surfL[2]*JfL[30]+jacobgeo_rat_surfL[1]*JfL[28]+jacobgeo_rat_surfL[0]*JfL[24])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[29]+jacobgeo_rat_surfL[2]*JfL[25]+jacobgeo_rat_surfL[1]*JfL[23]+jacobgeo_rat_surfL[0]*JfL[15])); + JRatfL[11] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[26]+jacobgeo_rat_surfL[1]*JfL[19]+jacobgeo_rat_surfL[2]*JfL[17]+jacobgeo_rat_surfL[3]*JfL[10])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[18]+jacobgeo_rat_surfL[1]*JfL[11]+jacobgeo_rat_surfL[2]*JfL[9]+jacobgeo_rat_surfL[3]*JfL[4])); + JRatfL[12] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[27]+jacobgeo_rat_surfL[1]*JfL[22]+jacobgeo_rat_surfL[2]*JfL[20]+jacobgeo_rat_surfL[3]*JfL[13])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[21]+jacobgeo_rat_surfL[1]*JfL[14]+jacobgeo_rat_surfL[2]*JfL[12]+jacobgeo_rat_surfL[3]*JfL[5])); + JRatfL[13] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[31]+jacobgeo_rat_surfL[3]*JfL[30]+jacobgeo_rat_surfL[0]*JfL[28]+jacobgeo_rat_surfL[1]*JfL[24])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[29]+jacobgeo_rat_surfL[3]*JfL[25]+jacobgeo_rat_surfL[0]*JfL[23]+jacobgeo_rat_surfL[1]*JfL[15])); + JRatfL[14] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[31]+jacobgeo_rat_surfL[0]*JfL[30]+jacobgeo_rat_surfL[3]*JfL[28]+jacobgeo_rat_surfL[2]*JfL[24])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[29]+jacobgeo_rat_surfL[0]*JfL[25]+jacobgeo_rat_surfL[3]*JfL[23]+jacobgeo_rat_surfL[2]*JfL[15])); + JRatfL[15] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[31]+jacobgeo_rat_surfL[1]*JfL[30]+jacobgeo_rat_surfL[2]*JfL[28]+jacobgeo_rat_surfL[3]*JfL[24])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[29]+jacobgeo_rat_surfL[1]*JfL[25]+jacobgeo_rat_surfL[2]*JfL[23]+jacobgeo_rat_surfL[3]*JfL[15])); + JRatfL[16] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[43]+jacobgeo_rat_surfL[0]*JfL[34])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[35]+jacobgeo_rat_surfL[1]*JfL[33]))+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[39]+jacobgeo_rat_surfL[1]*JfL[37])+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[38]+jacobgeo_rat_surfL[0]*JfL[32])); + JRatfL[17] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[43]+jacobgeo_rat_surfL[1]*JfL[34])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[39]+jacobgeo_rat_surfL[0]*JfL[37])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[38]+jacobgeo_rat_surfL[1]*JfL[32]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[35]+jacobgeo_rat_surfL[0]*JfL[33])); + JRatfL[18] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[43]+jacobgeo_rat_surfL[2]*JfL[34])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[39]+jacobgeo_rat_surfL[3]*JfL[37])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[38]+jacobgeo_rat_surfL[2]*JfL[32]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[35]+jacobgeo_rat_surfL[3]*JfL[33])); + JRatfL[19] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[47]+jacobgeo_rat_surfL[0]*JfL[41])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[42]+jacobgeo_rat_surfL[1]*JfL[40]))+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[46]+jacobgeo_rat_surfL[1]*JfL[44])+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[45]+jacobgeo_rat_surfL[0]*JfL[36])); + JRatfL[20] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[43]+jacobgeo_rat_surfL[3]*JfL[34])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[35]+jacobgeo_rat_surfL[2]*JfL[33]))+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[39]+jacobgeo_rat_surfL[2]*JfL[37])+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[38]+jacobgeo_rat_surfL[3]*JfL[32])); + JRatfL[21] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[47]+jacobgeo_rat_surfL[1]*JfL[41])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[46]+jacobgeo_rat_surfL[0]*JfL[44])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[45]+jacobgeo_rat_surfL[1]*JfL[36]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[42]+jacobgeo_rat_surfL[0]*JfL[40])); + 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 *flux_surf_nodal = &flux_surf[24]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdy2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1.c new file mode 100644 index 0000000000..3c063d47f0 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1.c @@ -0,0 +1,349 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[3]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+vmap[2]*(bmag[0]-1.7320508075688772*bmag[3]); + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[5])*q_+vmap[2]*(bmag[1]-1.7320508075688772*bmag[5]); + hamil[2] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[6])*q_; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (bmag[0]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[5] = (1.4142135623730951*phi[4]-2.4494897427831783*phi[7])*q_; + hamil[8] = vmap[3]*(bmag[1]-1.7320508075688772*bmag[5]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double JRatfL[24] = {0.}; + JRatfL[0] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[16]+jacobgeo_rat_surfL[2]*JfL[8]+jacobgeo_rat_surfL[1]*JfL[7]+jacobgeo_rat_surfL[0]*JfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[6]+JfL[2]*jacobgeo_rat_surfL[2]+JfL[1]*jacobgeo_rat_surfL[1]+JfL[0]*jacobgeo_rat_surfL[0])); + JRatfL[1] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[16]+jacobgeo_rat_surfL[3]*JfL[8]+jacobgeo_rat_surfL[0]*JfL[7]+jacobgeo_rat_surfL[1]*JfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[6]+JfL[2]*jacobgeo_rat_surfL[3]+JfL[0]*jacobgeo_rat_surfL[1]+jacobgeo_rat_surfL[0]*JfL[1])); + JRatfL[2] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[16]+jacobgeo_rat_surfL[0]*JfL[8]+jacobgeo_rat_surfL[3]*JfL[7]+jacobgeo_rat_surfL[2]*JfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[6]+JfL[1]*jacobgeo_rat_surfL[3]+JfL[0]*jacobgeo_rat_surfL[2]+jacobgeo_rat_surfL[0]*JfL[2])); + JRatfL[3] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[26]+jacobgeo_rat_surfL[2]*JfL[19]+jacobgeo_rat_surfL[1]*JfL[18]+jacobgeo_rat_surfL[0]*JfL[11])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[17]+jacobgeo_rat_surfL[2]*JfL[10]+jacobgeo_rat_surfL[1]*JfL[9]+jacobgeo_rat_surfL[0]*JfL[4])); + JRatfL[4] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[27]+jacobgeo_rat_surfL[2]*JfL[22]+jacobgeo_rat_surfL[1]*JfL[21]+jacobgeo_rat_surfL[0]*JfL[14])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[20]+jacobgeo_rat_surfL[2]*JfL[13]+jacobgeo_rat_surfL[1]*JfL[12]+jacobgeo_rat_surfL[0]*JfL[5])); + JRatfL[5] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[16]+jacobgeo_rat_surfL[1]*JfL[8]+jacobgeo_rat_surfL[2]*JfL[7]+JfL[3]*jacobgeo_rat_surfL[3])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[6]+JfL[0]*jacobgeo_rat_surfL[3]+JfL[1]*jacobgeo_rat_surfL[2]+jacobgeo_rat_surfL[1]*JfL[2])); + JRatfL[6] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[26]+jacobgeo_rat_surfL[3]*JfL[19]+jacobgeo_rat_surfL[0]*JfL[18]+jacobgeo_rat_surfL[1]*JfL[11])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[17]+jacobgeo_rat_surfL[3]*JfL[10]+jacobgeo_rat_surfL[0]*JfL[9]+jacobgeo_rat_surfL[1]*JfL[4])); + JRatfL[7] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[26]+jacobgeo_rat_surfL[0]*JfL[19]+jacobgeo_rat_surfL[3]*JfL[18]+jacobgeo_rat_surfL[2]*JfL[11])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[17]+jacobgeo_rat_surfL[0]*JfL[10]+jacobgeo_rat_surfL[3]*JfL[9]+jacobgeo_rat_surfL[2]*JfL[4])); + JRatfL[8] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[27]+jacobgeo_rat_surfL[3]*JfL[22]+jacobgeo_rat_surfL[0]*JfL[21]+jacobgeo_rat_surfL[1]*JfL[14])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[20]+jacobgeo_rat_surfL[3]*JfL[13]+jacobgeo_rat_surfL[0]*JfL[12]+jacobgeo_rat_surfL[1]*JfL[5])); + JRatfL[9] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[27]+jacobgeo_rat_surfL[0]*JfL[22]+jacobgeo_rat_surfL[3]*JfL[21]+jacobgeo_rat_surfL[2]*JfL[14])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[20]+jacobgeo_rat_surfL[0]*JfL[13]+jacobgeo_rat_surfL[3]*JfL[12]+jacobgeo_rat_surfL[2]*JfL[5])); + JRatfL[10] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[3]*JfL[31]+jacobgeo_rat_surfL[2]*JfL[30]+jacobgeo_rat_surfL[1]*JfL[29]+jacobgeo_rat_surfL[0]*JfL[25])+1.4142135623730951*(jacobgeo_rat_surfL[3]*JfL[28]+jacobgeo_rat_surfL[2]*JfL[24]+jacobgeo_rat_surfL[1]*JfL[23]+jacobgeo_rat_surfL[0]*JfL[15])); + JRatfL[11] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[26]+jacobgeo_rat_surfL[1]*JfL[19]+jacobgeo_rat_surfL[2]*JfL[18]+jacobgeo_rat_surfL[3]*JfL[11])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[17]+jacobgeo_rat_surfL[1]*JfL[10]+jacobgeo_rat_surfL[2]*JfL[9]+jacobgeo_rat_surfL[3]*JfL[4])); + JRatfL[12] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[27]+jacobgeo_rat_surfL[1]*JfL[22]+jacobgeo_rat_surfL[2]*JfL[21]+jacobgeo_rat_surfL[3]*JfL[14])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[20]+jacobgeo_rat_surfL[1]*JfL[13]+jacobgeo_rat_surfL[2]*JfL[12]+jacobgeo_rat_surfL[3]*JfL[5])); + JRatfL[13] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[31]+jacobgeo_rat_surfL[3]*JfL[30]+jacobgeo_rat_surfL[0]*JfL[29]+jacobgeo_rat_surfL[1]*JfL[25])+1.4142135623730951*(jacobgeo_rat_surfL[2]*JfL[28]+jacobgeo_rat_surfL[3]*JfL[24]+jacobgeo_rat_surfL[0]*JfL[23]+jacobgeo_rat_surfL[1]*JfL[15])); + JRatfL[14] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[31]+jacobgeo_rat_surfL[0]*JfL[30]+jacobgeo_rat_surfL[3]*JfL[29]+jacobgeo_rat_surfL[2]*JfL[25])+1.4142135623730951*(jacobgeo_rat_surfL[1]*JfL[28]+jacobgeo_rat_surfL[0]*JfL[24]+jacobgeo_rat_surfL[3]*JfL[23]+jacobgeo_rat_surfL[2]*JfL[15])); + JRatfL[15] = 0.25*(2.4494897427831783*(jacobgeo_rat_surfL[0]*JfL[31]+jacobgeo_rat_surfL[1]*JfL[30]+jacobgeo_rat_surfL[2]*JfL[29]+jacobgeo_rat_surfL[3]*JfL[25])+1.4142135623730951*(jacobgeo_rat_surfL[0]*JfL[28]+jacobgeo_rat_surfL[1]*JfL[24]+jacobgeo_rat_surfL[2]*JfL[23]+jacobgeo_rat_surfL[3]*JfL[15])); + JRatfL[16] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[43]+jacobgeo_rat_surfL[0]*JfL[35])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[34]+jacobgeo_rat_surfL[1]*JfL[33]))+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[39]+jacobgeo_rat_surfL[1]*JfL[38])+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[37]+jacobgeo_rat_surfL[0]*JfL[32])); + JRatfL[17] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[43]+jacobgeo_rat_surfL[1]*JfL[35])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[39]+jacobgeo_rat_surfL[0]*JfL[38])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[37]+jacobgeo_rat_surfL[1]*JfL[32]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[34]+jacobgeo_rat_surfL[0]*JfL[33])); + JRatfL[18] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[43]+jacobgeo_rat_surfL[2]*JfL[35])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[39]+jacobgeo_rat_surfL[3]*JfL[38])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[37]+jacobgeo_rat_surfL[2]*JfL[32]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[34]+jacobgeo_rat_surfL[3]*JfL[33])); + JRatfL[19] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[47]+jacobgeo_rat_surfL[0]*JfL[42])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[41]+jacobgeo_rat_surfL[1]*JfL[40]))+36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[46]+jacobgeo_rat_surfL[1]*JfL[45])+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[44]+jacobgeo_rat_surfL[0]*JfL[36])); + JRatfL[20] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[43]+jacobgeo_rat_surfL[3]*JfL[35])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[34]+jacobgeo_rat_surfL[2]*JfL[33]))+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[39]+jacobgeo_rat_surfL[2]*JfL[38])+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[37]+jacobgeo_rat_surfL[3]*JfL[32])); + JRatfL[21] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[2]*JfL[47]+jacobgeo_rat_surfL[1]*JfL[42])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[3]*JfL[46]+jacobgeo_rat_surfL[0]*JfL[45])+2.4494897427831783*(jacobgeo_rat_surfL[2]*JfL[44]+jacobgeo_rat_surfL[1]*JfL[36]))+21.213203435596427*(jacobgeo_rat_surfL[3]*JfL[41]+jacobgeo_rat_surfL[0]*JfL[40])); + 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 *flux_surf_nodal = &flux_surf[48]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfvpar_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfvpar_2x2v_ser_p1.c new file mode 100644 index 0000000000..4ff4b86d61 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfvpar_2x2v_ser_p1.c @@ -0,0 +1,185 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + 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 *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 m_bmag_inv = 0.0; + double mvpar_over_q = 0.0; + double g_13 = 0.0; + double g_23 = 0.0; + double g_33 = 0.0; + double mag_e_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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[0].g_13; + g_23 = gkdgv[0].g_23; + g_33 = gkdgv[0].g_33; + mag_e_3 = gkdgv[0].mag_e_3; + + alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + + 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]; + JfR_quad = (-(0.5590169943749476*JfR[23])+0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]-0.25*JfR[12]-0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]+0.25*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]+0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (0.5590169943749476*JfR[23]-0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]+0.25*JfR[12]-0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]-0.25*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]+0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[1].g_13; + g_23 = gkdgv[1].g_23; + g_33 = gkdgv[1].g_33; + mag_e_3 = gkdgv[1].mag_e_3; + + alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + + 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]; + JfR_quad = (0.5590169943749476*JfR[23]-0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]+0.25*JfR[12]+0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]-0.25*JfR[9]+0.25*JfR[8]-0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]-0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (-(0.5590169943749476*JfR[23])+0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]-0.25*JfR[12]+0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]+0.25*JfR[9]-0.25*JfR[8]-0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]-0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[2].g_13; + g_23 = gkdgv[2].g_23; + g_33 = gkdgv[2].g_33; + mag_e_3 = gkdgv[2].mag_e_3; + + alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + + 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]; + JfR_quad = (0.5590169943749476*JfR[23]+0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]+0.25*JfR[12]+0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]+0.25*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]-0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (-(0.5590169943749476*JfR[23])-0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]-0.25*JfR[12]+0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]-0.25*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]-0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[3].g_13; + g_23 = gkdgv[3].g_23; + g_33 = gkdgv[3].g_33; + mag_e_3 = gkdgv[3].mag_e_3; + + alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + + 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]; + JfR_quad = (-(0.5590169943749476*JfR[23])-0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]-0.25*JfR[12]-0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]-0.25*JfR[9]-0.25*JfR[8]-0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]+0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (0.5590169943749476*JfR[23]+0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]+0.25*JfR[12]-0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]+0.25*JfR[9]+0.25*JfR[8]-0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]+0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_no_by_surfvpar_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfvpar_3x2v_ser_p1.c new file mode 100644 index 0000000000..6876e3ddff --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfvpar_3x2v_ser_p1.c @@ -0,0 +1,310 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 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 *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 m_bmag_inv = 0.0; + double mvpar_over_q = 0.0; + double g_13 = 0.0; + double g_23 = 0.0; + double g_33 = 0.0; + double mag_e_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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[0].g_13; + g_23 = gkdgv[0].g_23; + g_33 = gkdgv[0].g_33; + mag_e_3 = gkdgv[0].mag_e_3; + + 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 ; + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[1].g_13; + g_23 = gkdgv[1].g_23; + g_33 = gkdgv[1].g_33; + mag_e_3 = gkdgv[1].mag_e_3; + + 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 ; + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[2].g_13; + g_23 = gkdgv[2].g_23; + g_33 = gkdgv[2].g_33; + mag_e_3 = gkdgv[2].mag_e_3; + + 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 ; + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[3].g_13; + g_23 = gkdgv[3].g_23; + g_33 = gkdgv[3].g_33; + mag_e_3 = gkdgv[3].mag_e_3; + + 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 ; + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[4].g_13; + g_23 = gkdgv[4].g_23; + g_33 = gkdgv[4].g_33; + mag_e_3 = gkdgv[4].mag_e_3; + + 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 ; + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[5].g_13; + g_23 = gkdgv[5].g_23; + g_33 = gkdgv[5].g_33; + mag_e_3 = gkdgv[5].mag_e_3; + + 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 ; + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[6].g_13; + g_23 = gkdgv[6].g_23; + g_33 = gkdgv[6].g_33; + mag_e_3 = gkdgv[6].mag_e_3; + + 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 ; + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[7].g_13; + g_23 = gkdgv[7].g_23; + g_33 = gkdgv[7].g_33; + mag_e_3 = gkdgv[7].mag_e_3; + + 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 ; + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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 ; + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_no_by_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfx_2x2v_ser_p1.c new file mode 100644 index 0000000000..2a75acf281 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfx_2x2v_ser_p1.c @@ -0,0 +1,192 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[1])*q_+vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[3])*q_+vmap[2]*(bmag[2]-1.7320508075688772*bmag[3]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[5] = (bmag[2]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]-0.4841229182759271*(JfR[21]+JfR[20])+0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]+0.4330127018922193*(JfR[8]+JfR[5])-0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]+0.4841229182759271*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]-0.4841229182759271*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]-0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]+0.4841229182759271*(JfR[21]+JfR[20])-0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]-0.4330127018922193*(JfR[8]+JfR[5])+0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfx_3x2v_ser_p1.c new file mode 100644 index 0000000000..01f69a0ccf --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfx_3x2v_ser_p1.c @@ -0,0 +1,323 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[1]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[4])*q_; + hamil[2] = (1.4142135623730951*phi[3]-2.4494897427831783*phi[5])*q_+vmap[2]*(bmag[3]-1.7320508075688772*bmag[5]); + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[5] = (1.4142135623730951*phi[6]-2.4494897427831783*phi[7])*q_; + hamil[9] = vmap[3]*(bmag[3]-1.7320508075688772*bmag[5]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*JfR[36]+0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*JfR[36]-0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfy_2x2v_ser_p1.c new file mode 100644 index 0000000000..3f3ae1c87f --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfy_2x2v_ser_p1.c @@ -0,0 +1,192 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[2])*q_+vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[2])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[3])*q_+vmap[2]*(bmag[1]-1.7320508075688772*bmag[3]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (bmag[0]-1.7320508075688772*bmag[2])*vmap[3]; + hamil[5] = (bmag[1]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[12]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.4841229182759271*JfR[22]-0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.4841229182759271*JfR[22]+0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.4841229182759271*(JfR[23]+JfR[22]))+0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*(JfR[12]+JfR[9])-0.25*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.4841229182759271*(JfR[23]+JfR[22])-0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*(JfR[12]+JfR[9])+0.25*JfR[8]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfy_3x2v_ser_p1.c new file mode 100644 index 0000000000..5e9589a976 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfy_3x2v_ser_p1.c @@ -0,0 +1,325 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[2]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+bmag[0]*vmap[2]; + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[4])*q_+bmag[1]*vmap[2]; + hamil[2] = (1.4142135623730951*phi[3]-2.4494897427831783*phi[6])*q_+vmap[2]*bmag[3]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = bmag[0]*vmap[3]; + hamil[5] = (1.4142135623730951*phi[5]-2.4494897427831783*phi[7])*q_+vmap[2]*bmag[5]; + hamil[8] = bmag[1]*vmap[3]; + hamil[9] = bmag[3]*vmap[3]; + hamil[12] = vmap[3]*bmag[5]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[24]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + alpha_quad = 0.0; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdy2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfz_3x2v_ser_p1.c new file mode 100644 index 0000000000..f42556cfd1 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_no_by_surfz_3x2v_ser_p1.c @@ -0,0 +1,323 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[3]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+vmap[2]*(bmag[0]-1.7320508075688772*bmag[3]); + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[5])*q_+vmap[2]*(bmag[1]-1.7320508075688772*bmag[5]); + hamil[2] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[6])*q_; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (bmag[0]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[5] = (1.4142135623730951*phi[4]-2.4494897427831783*phi[7])*q_; + hamil[8] = vmap[3]*(bmag[1]-1.7320508075688772*bmag[5]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[48]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + area_elem_quad = dgs[1].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + area_elem_quad = dgs[2].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + area_elem_quad = dgs[3].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_1x1v_ser_p1.c new file mode 100644 index 0000000000..1b99d93270 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_1x1v_ser_p1.c @@ -0,0 +1,102 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + 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 *flux_surf_nodal = &flux_surf[3]; + 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 m_bmag_inv = 0.0; + double mvpar_over_q = 0.0; + double g_13 = 0.0; + double g_23 = 0.0; + double g_33 = 0.0; + double mag_e_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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[0].g_13; + g_23 = gkdgv[0].g_23; + g_33 = gkdgv[0].g_33; + mag_e_3 = gkdgv[0].mag_e_3; + + 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_inv * (0.7071067811865475*apar[0]-0.7071067811865475*apar[1])*dualcurlbhat_quad[2]; + + 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]; + JfR_quad = (-(1.1180339887498951*JfR[5])+1.118033988749895*JfR[4]+0.8660254037844386*JfR[3]-0.8660254037844386*JfR[2]-0.5*JfR[1]+0.5*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[1].g_13; + g_23 = gkdgv[1].g_23; + g_33 = gkdgv[1].g_33; + mag_e_3 = gkdgv[1].mag_e_3; + + 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_inv * (0.7071067811865475*apar[1]+0.7071067811865475*apar[0])*dualcurlbhat_quad[2]; + + 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]; + JfR_quad = (1.1180339887498951*JfR[5]+1.118033988749895*JfR[4]-0.8660254037844386*JfR[3]-0.8660254037844386*JfR[2]+0.5*JfR[1]+0.5*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_surfvpar_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_1x2v_ser_p1.c new file mode 100644 index 0000000000..bac43c6b97 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_1x2v_ser_p1.c @@ -0,0 +1,124 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + 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 *flux_surf_nodal = &flux_surf[6]; + 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 m_bmag_inv = 0.0; + double mvpar_over_q = 0.0; + double g_13 = 0.0; + double g_23 = 0.0; + double g_33 = 0.0; + double mag_e_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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[0].g_13; + g_23 = gkdgv[0].g_23; + g_33 = gkdgv[0].g_33; + mag_e_3 = gkdgv[0].mag_e_3; + + 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_inv * (0.7071067811865475*apar[0]-0.7071067811865475*apar[1])*dualcurlbhat_quad[2]; + + 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]; + JfR_quad = (0.7905694150420947*JfR[11]-0.7905694150420948*JfR[10]-0.7905694150420948*JfR[9]+0.7905694150420947*JfR[8]-0.6123724356957944*JfR[7]+0.6123724356957944*JfR[6]+0.3535533905932737*JfR[5]+0.6123724356957944*JfR[4]-0.3535533905932737*JfR[3]-0.6123724356957944*JfR[2]-0.3535533905932737*JfR[1]+0.3535533905932737*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_inv * (0.7071067811865475*apar[0]-0.7071067811865475*apar[1])*dualcurlbhat_quad[2]; + + 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]; + JfR_quad = (-(0.7905694150420947*JfR[11])+0.7905694150420948*JfR[10]-0.7905694150420948*JfR[9]+0.7905694150420947*JfR[8]+0.6123724356957944*JfR[7]-0.6123724356957944*JfR[6]-0.3535533905932737*JfR[5]+0.6123724356957944*JfR[4]+0.3535533905932737*JfR[3]-0.6123724356957944*JfR[2]-0.3535533905932737*JfR[1]+0.3535533905932737*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[1].g_13; + g_23 = gkdgv[1].g_23; + g_33 = gkdgv[1].g_33; + mag_e_3 = gkdgv[1].mag_e_3; + + 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_inv * (0.7071067811865475*apar[1]+0.7071067811865475*apar[0])*dualcurlbhat_quad[2]; + + 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]; + JfR_quad = (-(0.7905694150420947*JfR[11])-0.7905694150420948*JfR[10]+0.7905694150420948*JfR[9]+0.7905694150420947*JfR[8]+0.6123724356957944*JfR[7]+0.6123724356957944*JfR[6]-0.3535533905932737*JfR[5]-0.6123724356957944*JfR[4]-0.3535533905932737*JfR[3]-0.6123724356957944*JfR[2]+0.3535533905932737*JfR[1]+0.3535533905932737*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_inv * (0.7071067811865475*apar[1]+0.7071067811865475*apar[0])*dualcurlbhat_quad[2]; + + 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]; + JfR_quad = (0.7905694150420947*JfR[11]+0.7905694150420948*JfR[10]+0.7905694150420948*JfR[9]+0.7905694150420947*JfR[8]-0.6123724356957944*JfR[7]-0.6123724356957944*JfR[6]+0.3535533905932737*JfR[5]-0.6123724356957944*JfR[4]+0.3535533905932737*JfR[3]-0.6123724356957944*JfR[2]+0.3535533905932737*JfR[1]+0.3535533905932737*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_surfvpar_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_2x2v_ser_p1.c new file mode 100644 index 0000000000..554172f189 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_2x2v_ser_p1.c @@ -0,0 +1,217 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + 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 *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 m_bmag_inv = 0.0; + double mvpar_over_q = 0.0; + double g_13 = 0.0; + double g_23 = 0.0; + double g_33 = 0.0; + double mag_e_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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[0].g_13; + g_23 = gkdgv[0].g_23; + g_33 = gkdgv[0].g_33; + mag_e_3 = gkdgv[0].mag_e_3; + + 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[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * (0.5*apar[3]-0.5*apar[2]-0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * (0.5*apar[3]-0.5*apar[2]-0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[2]; + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (-g_23 * ((0.8660254037844386*apar[2]-0.8660254037844386*apar[3])*rdz2)); + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * 1/mag_e_3/Jc_quad * ( g_23 * ((0.8660254037844386*apar[1]-0.8660254037844386*apar[3])*rdx2)); + + 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]; + JfR_quad = (-(0.5590169943749476*JfR[23])+0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]-0.25*JfR[12]-0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]+0.25*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]+0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * (0.5*apar[3]-0.5*apar[2]-0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * (0.5*apar[3]-0.5*apar[2]-0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[2]; + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (-g_23 * ((0.8660254037844386*apar[2]-0.8660254037844386*apar[3])*rdz2)); + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * 1/mag_e_3/Jc_quad * ( g_23 * ((0.8660254037844386*apar[1]-0.8660254037844386*apar[3])*rdx2)); + + 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]; + JfR_quad = (0.5590169943749476*JfR[23]-0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]+0.25*JfR[12]-0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]-0.25*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]+0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[1].g_13; + g_23 = gkdgv[1].g_23; + g_33 = gkdgv[1].g_33; + mag_e_3 = gkdgv[1].mag_e_3; + + 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[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * (-(0.5*apar[3])+0.5*apar[2]-0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * (-(0.5*apar[3])+0.5*apar[2]-0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[2]; + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (-g_23 * ((0.8660254037844386*apar[2]-0.8660254037844386*apar[3])*rdz2)); + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * 1/mag_e_3/Jc_quad * ( g_23 * ((0.8660254037844386*apar[3]+0.8660254037844386*apar[1])*rdx2)); + + 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]; + JfR_quad = (0.5590169943749476*JfR[23]-0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]+0.25*JfR[12]+0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]-0.25*JfR[9]+0.25*JfR[8]-0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]-0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * (-(0.5*apar[3])+0.5*apar[2]-0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * (-(0.5*apar[3])+0.5*apar[2]-0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[2]; + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (-g_23 * ((0.8660254037844386*apar[2]-0.8660254037844386*apar[3])*rdz2)); + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * 1/mag_e_3/Jc_quad * ( g_23 * ((0.8660254037844386*apar[3]+0.8660254037844386*apar[1])*rdx2)); + + 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]; + JfR_quad = (-(0.5590169943749476*JfR[23])+0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]-0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]-0.25*JfR[12]+0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]+0.25*JfR[9]-0.25*JfR[8]-0.4330127018922193*JfR[7]+0.4330127018922193*JfR[6]-0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]-0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[2].g_13; + g_23 = gkdgv[2].g_23; + g_33 = gkdgv[2].g_33; + mag_e_3 = gkdgv[2].mag_e_3; + + 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[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * (-(0.5*apar[3])-0.5*apar[2]+0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * (-(0.5*apar[3])-0.5*apar[2]+0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[2]; + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (-g_23 * ((0.8660254037844386*apar[3]+0.8660254037844386*apar[2])*rdz2)); + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * 1/mag_e_3/Jc_quad * ( g_23 * ((0.8660254037844386*apar[1]-0.8660254037844386*apar[3])*rdx2)); + + 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]; + JfR_quad = (0.5590169943749476*JfR[23]+0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]+0.25*JfR[12]+0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]+0.25*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]-0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * (-(0.5*apar[3])-0.5*apar[2]+0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * (-(0.5*apar[3])-0.5*apar[2]+0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[2]; + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (-g_23 * ((0.8660254037844386*apar[3]+0.8660254037844386*apar[2])*rdz2)); + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * 1/mag_e_3/Jc_quad * ( g_23 * ((0.8660254037844386*apar[1]-0.8660254037844386*apar[3])*rdx2)); + + 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]; + JfR_quad = (-(0.5590169943749476*JfR[23])-0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]-0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]-0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]-0.25*JfR[12]+0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]-0.25*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]-0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]-0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[3].g_13; + g_23 = gkdgv[3].g_23; + g_33 = gkdgv[3].g_33; + mag_e_3 = gkdgv[3].mag_e_3; + + 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[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * (0.5*apar[3]+0.5*apar[2]+0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * (0.5*apar[3]+0.5*apar[2]+0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[2]; + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (-g_23 * ((0.8660254037844386*apar[3]+0.8660254037844386*apar[2])*rdz2)); + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * 1/mag_e_3/Jc_quad * ( g_23 * ((0.8660254037844386*apar[3]+0.8660254037844386*apar[1])*rdx2)); + + 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]; + JfR_quad = (-(0.5590169943749476*JfR[23])-0.5590169943749475*JfR[22]-0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]-0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]+0.4330127018922193*JfR[15]+0.4330127018922193*JfR[14]+0.4330127018922193*JfR[13]-0.25*JfR[12]-0.4330127018922193*JfR[11]+0.4330127018922193*JfR[10]-0.25*JfR[9]-0.25*JfR[8]-0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]+0.25*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * (0.5*apar[3]+0.5*apar[2]+0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * (0.5*apar[3]+0.5*apar[2]+0.5*apar[1]+0.5*apar[0])*dualcurlbhat_quad[2]; + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (-g_23 * ((0.8660254037844386*apar[3]+0.8660254037844386*apar[2])*rdz2)); + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)*m_bmag_inv * 1/mag_e_3/Jc_quad * ( g_23 * ((0.8660254037844386*apar[3]+0.8660254037844386*apar[1])*rdx2)); + + 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]; + JfR_quad = (0.5590169943749476*JfR[23]+0.5590169943749475*JfR[22]+0.5590169943749475*JfR[21]+0.5590169943749475*JfR[20]+0.5590169943749476*JfR[19]+0.5590169943749476*JfR[18]+0.5590169943749476*JfR[17]+0.5590169943749475*JfR[16]-0.4330127018922193*JfR[15]-0.4330127018922193*JfR[14]-0.4330127018922193*JfR[13]+0.25*JfR[12]-0.4330127018922193*JfR[11]-0.4330127018922193*JfR[10]+0.25*JfR[9]+0.25*JfR[8]-0.4330127018922193*JfR[7]-0.4330127018922193*JfR[6]+0.25*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[3]+0.25*JfR[2]+0.25*JfR[1]+0.25*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_surfvpar_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_3x2v_ser_p1.c new file mode 100644 index 0000000000..ff0fdbdcca --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfvpar_3x2v_ser_p1.c @@ -0,0 +1,406 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap_prime_l,vmap_prime_r: velocity space mapping derivative in left and right cells. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgv: volume DG geometry. + // gkdgv: gyrokinetic volume DG geometry. + // bmag: magnetic field amplitude. + // phi: electrostatic potential. + // apar: 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 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 *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 m_bmag_inv = 0.0; + double mvpar_over_q = 0.0; + double g_13 = 0.0; + double g_23 = 0.0; + double g_33 = 0.0; + double mag_e_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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[0].g_13; + g_23 = gkdgv[0].g_23; + g_33 = gkdgv[0].g_33; + mag_e_3 = gkdgv[0].mag_e_3; + + 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[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[1].g_13; + g_23 = gkdgv[1].g_23; + g_33 = gkdgv[1].g_33; + mag_e_3 = gkdgv[1].mag_e_3; + + 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[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[2].g_13; + g_23 = gkdgv[2].g_23; + g_33 = gkdgv[2].g_33; + mag_e_3 = gkdgv[2].mag_e_3; + + 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[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (0.3535533905932737*apar[7]-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[3].g_13; + g_23 = gkdgv[3].g_23; + g_33 = gkdgv[3].g_33; + mag_e_3 = gkdgv[3].mag_e_3; + + 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[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (-(0.3535533905932737*apar[7])+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]-0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[6]-0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]-0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]+0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[4].g_13; + g_23 = gkdgv[4].g_23; + g_33 = gkdgv[4].g_33; + mag_e_3 = gkdgv[4].mag_e_3; + + 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[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]-0.3535533905932737*apar[5]-0.3535533905932737*apar[4]-0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((0.6123724356957944*apar[7]-0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[5].g_13; + g_23 = gkdgv[5].g_23; + g_33 = gkdgv[5].g_33; + mag_e_3 = gkdgv[5].mag_e_3; + + 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[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]+0.3535533905932737*apar[5]-0.3535533905932737*apar[4]+0.3535533905932737*apar[3]-0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((-(0.6123724356957944*apar[7])+0.6123724356957944*apar[5]-0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]-0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]-0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]+0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]+0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[6].g_13; + g_23 = gkdgv[6].g_23; + g_33 = gkdgv[6].g_33; + mag_e_3 = gkdgv[6].mag_e_3; + + 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[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (-(0.3535533905932737*apar[7])-0.3535533905932737*apar[6]-0.3535533905932737*apar[5]+0.3535533905932737*apar[4]-0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((-(0.6123724356957944*apar[7])-0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]-0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]-0.3952847075210473*JfR[39]-0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]-0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]+0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*JfR[19]+0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]-0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]-0.1767766952966368*JfR[8]-0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; + flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + + 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]; + m_bmag_inv = 1.0/(m_*bmag_quad); + g_13 = gkdgv[7].g_13; + g_23 = gkdgv[7].g_23; + g_33 = gkdgv[7].g_33; + mag_e_3 = gkdgv[7].mag_e_3; + + 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[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (-(0.3952847075210473*JfR[47])-0.39528470752104733*JfR[46]-0.39528470752104733*JfR[45]-0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]-0.3952847075210473*JfR[42]-0.3952847075210473*JfR[41]-0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]-0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]+0.3061862178478971*JfR[31]+0.3061862178478971*JfR[30]+0.3061862178478971*JfR[29]+0.3061862178478971*JfR[28]-0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]+0.3061862178478971*JfR[25]+0.3061862178478971*JfR[24]+0.3061862178478971*JfR[23]-0.1767766952966368*JfR[22]-0.1767766952966368*JfR[21]-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]+0.3061862178478971*JfR[15]-0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)*m_bmag_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[0]; + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[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_inv * (0.3535533905932737*apar[7]+0.3535533905932737*apar[6]+0.3535533905932737*apar[5]+0.3535533905932737*apar[4]+0.3535533905932737*apar[3]+0.3535533905932737*apar[2]+0.3535533905932737*apar[1]+0.3535533905932737*apar[0])*dualcurlbhat_quad[2]; + 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_inv * 1/mag_e_3/Jc_quad * (g_33 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2) - g_23 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2)); + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)*m_bmag_inv * 1/mag_e_3/Jc_quad * (g_13 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[5]+0.6123724356957944*apar[3])*rdz2) - g_33 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2)); + 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_inv * 1/mag_e_3/Jc_quad * (g_23 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[5]+0.6123724356957944*apar[4]+0.6123724356957944*apar[1])*rdx2) - g_13 * ((0.6123724356957944*apar[7]+0.6123724356957944*apar[6]+0.6123724356957944*apar[4]+0.6123724356957944*apar[2])*rdy2)); + + 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]; + JfR_quad = (0.3952847075210473*JfR[47]+0.39528470752104733*JfR[46]+0.39528470752104733*JfR[45]+0.39528470752104733*JfR[44]+0.39528470752104733*JfR[43]+0.3952847075210473*JfR[42]+0.3952847075210473*JfR[41]+0.3952847075210473*JfR[40]+0.3952847075210473*JfR[39]+0.3952847075210473*JfR[38]+0.3952847075210473*JfR[37]+0.39528470752104733*JfR[36]+0.39528470752104733*JfR[35]+0.39528470752104733*JfR[34]+0.39528470752104733*JfR[33]+0.3952847075210473*JfR[32]-0.3061862178478971*JfR[31]-0.3061862178478971*JfR[30]-0.3061862178478971*JfR[29]-0.3061862178478971*JfR[28]+0.1767766952966368*JfR[27]-0.3061862178478971*JfR[26]-0.3061862178478971*JfR[25]-0.3061862178478971*JfR[24]-0.3061862178478971*JfR[23]+0.1767766952966368*JfR[22]+0.1767766952966368*JfR[21]+0.1767766952966368*JfR[20]-0.3061862178478971*JfR[19]-0.3061862178478971*JfR[18]-0.3061862178478971*JfR[17]+0.1767766952966368*JfR[16]-0.3061862178478971*JfR[15]+0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[11]-0.3061862178478971*JfR[10]-0.3061862178478971*JfR[9]+0.1767766952966368*JfR[8]+0.1767766952966368*JfR[7]+0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[4]+0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]+0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0])/vmap_prime_r[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0 ; + 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_em_collisionless_flux_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_1x1v_ser_p1.c new file mode 100644 index 0000000000..9529bc93d9 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_1x1v_ser_p1.c @@ -0,0 +1,97 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + double hamil[6] = {0.}; + hamil[0] = (phi[0]-1.7320508075688772*phi[1])*q_+0.5*vmapSq[0]*m_; + hamil[1] = 0.5*vmapSq[1]*m_; + hamil[2] = 0.5*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = -(0.7745966692414834*JfR[5])+0.4472135954999579*JfR[4]+1.1618950038622249*JfR[3]-0.6708203932499369*JfR[2]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.9682458365518543*JfR[5]-0.5590169943749475*JfR[4]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.7745966692414834*JfR[5])+0.4472135954999579*JfR[4]-1.1618950038622249*JfR[3]+0.6708203932499369*JfR[2]-0.8660254037844386*JfR[1]+0.5*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_1x2v_ser_p1.c new file mode 100644 index 0000000000..5a925e02bf --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_1x2v_ser_p1.c @@ -0,0 +1,125 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + double hamil[12] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[1])*q_+0.7071067811865475*vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = 0.7071067811865475*vmapSq[1]*m_; + hamil[2] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[4] = 0.7071067811865475*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + area_elem_quad = dgs[0].area_elem; + + + alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_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]; + JfR_quad = 0.5477225575051661*JfR[11]-0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]-0.8215838362577489*JfR[7]+0.4743416490252568*JfR[6]+0.6123724356957944*JfR[5]+0.8215838362577489*JfR[4]-0.3535533905932737*JfR[3]-0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.6846531968814573*JfR[11])+0.39528470752104733*JfR[10]+0.6846531968814574*JfR[9]-0.3952847075210473*JfR[8]+0.6123724356957944*JfR[5]-0.3535533905932737*JfR[3]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.5477225575051661*JfR[11]-0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]+0.8215838362577489*JfR[7]-0.4743416490252568*JfR[6]+0.6123724356957944*JfR[5]-0.8215838362577489*JfR[4]-0.3535533905932737*JfR[3]+0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.5477225575051661*JfR[11])+0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]+0.8215838362577489*JfR[7]-0.4743416490252568*JfR[6]-0.6123724356957944*JfR[5]+0.8215838362577489*JfR[4]+0.3535533905932737*JfR[3]-0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = 0.6846531968814573*JfR[11]-0.39528470752104733*JfR[10]+0.6846531968814574*JfR[9]-0.3952847075210473*JfR[8]-0.6123724356957944*JfR[5]+0.3535533905932737*JfR[3]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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; + + 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]; + JfR_quad = -(0.5477225575051661*JfR[11])+0.3162277660168379*JfR[10]-0.5477225575051661*JfR[9]+0.3162277660168379*JfR[8]-0.8215838362577489*JfR[7]+0.4743416490252568*JfR[6]-0.6123724356957944*JfR[5]-0.8215838362577489*JfR[4]+0.3535533905932737*JfR[3]+0.4743416490252568*JfR[2]-0.6123724356957944*JfR[1]+0.3535533905932737*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_2x2v_ser_p1.c new file mode 100644 index 0000000000..cf64cd51ba --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_2x2v_ser_p1.c @@ -0,0 +1,216 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[1])*q_+vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[3])*q_+vmap[2]*(bmag[2]-1.7320508075688772*bmag[3]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[5] = (bmag[2]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]-0.4841229182759271*(JfR[21]+JfR[20])+0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]+0.4330127018922193*(JfR[8]+JfR[5])-0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]+0.38729833462074165*(JfR[21]+JfR[20])-0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]+0.4841229182759271*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]-0.4330127018922193*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]-0.38729833462074165*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.2795084971874737*JfR[22]-0.4841229182759271*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]-0.2795084971874738*JfR[18]+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.25*JfR[9]+0.4330127018922193*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.22360679774997896*JfR[22]+0.38729833462074165*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.25*JfR[9]+0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.33541019662496846*JfR[14]+0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]-0.33541019662496846*JfR[7]+0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.2795084971874737*JfR[22]+0.4841229182759271*(JfR[21]+JfR[20])-0.2795084971874738*(JfR[19]+JfR[18])+0.4841229182759271*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.25*JfR[9]-0.4330127018922193*(JfR[8]+JfR[5])+0.25*(JfR[4]+JfR[2])-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdz2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.22360679774997896*JfR[22]-0.38729833462074165*(JfR[21]+JfR[20])+0.22360679774997894*JfR[19]+0.22360679774997902*JfR[18]-0.3872983346207417*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.33541019662496846*JfR[14]-0.5809475019311124*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.25*JfR[9]-0.4330127018922193*JfR[8]+0.33541019662496846*JfR[7]-0.5809475019311124*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]+0.25*JfR[2]-0.4330127018922193*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_3x2v_ser_p1.c new file mode 100644 index 0000000000..fd7dc2c76a --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfx_3x2v_ser_p1.c @@ -0,0 +1,371 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[1]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+(bmag[0]-1.7320508075688772*bmag[1])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[4])*q_; + hamil[2] = (1.4142135623730951*phi[3]-2.4494897427831783*phi[5])*q_+vmap[2]*(bmag[3]-1.7320508075688772*bmag[5]); + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; + hamil[5] = (1.4142135623730951*phi[6]-2.4494897427831783*phi[7])*q_; + hamil[9] = vmap[3]*(bmag[3]-1.7320508075688772*bmag[5]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[0]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]-0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*JfR[36]+0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]+0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]-0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]+0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]+0.34232659844072866*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]-0.273861278752583*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]-0.3061862178478971*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.19764235376052364*JfR[41]-0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.15811388300841892*JfR[41]+0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*JfR[21]+0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.1767766952966368*JfR[13]+0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.2371708245126284*JfR[24]+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.2371708245126284*JfR[19]-0.41079191812887433*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]+0.2371708245126284*JfR[11]-0.2371708245126284*JfR[10]+0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.19764235376052364*JfR[41]+0.34232659844072866*JfR[40]+0.19764235376052364*JfR[39]-0.34232659844072866*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]-0.19764235376052366*JfR[34]+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.15811388300841892*JfR[41]-0.273861278752583*JfR[40]-0.15811388300841892*JfR[39]+0.273861278752583*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]+0.15811388300841894*JfR[34]-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.2371708245126284*JfR[24]-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*JfR[21]-0.3061862178478971*JfR[20]-0.2371708245126284*JfR[19]+0.41079191812887433*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.1767766952966368*JfR[13]-0.3061862178478971*JfR[12]-0.2371708245126284*JfR[11]+0.2371708245126284*JfR[10]-0.41079191812887433*JfR[9]-0.1767766952966368*JfR[8]+0.3061862178478971*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]+0.1767766952966368*JfR[2]-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.19764235376052366*JfR[46]-0.3423265984407287*(JfR[45]+JfR[44])+0.3423265984407287*JfR[43]+0.19764235376052364*(JfR[42]+JfR[41])-0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])+0.19764235376052366*JfR[36]-0.19764235376052366*(JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])-0.3061862178478971*JfR[16]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.15811388300841892*JfR[46]+0.27386127875258304*(JfR[45]+JfR[44])-0.27386127875258304*JfR[43]-0.15811388300841892*(JfR[42]+JfR[41])+0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])-0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]-0.1767766952966368*JfR[22]+0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*(JfR[14]+JfR[13])+0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.2371708245126284*JfR[30]+0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*(JfR[25]+JfR[24])+0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])-0.2371708245126284*JfR[19]+0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]-0.2371708245126284*(JfR[11]+JfR[10])+0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.19764235376052366*JfR[46]+0.3423265984407287*(JfR[45]+JfR[44]+JfR[43])-0.19764235376052364*(JfR[42]+JfR[41])+0.34232659844072866*JfR[40]-0.19764235376052364*JfR[39]+0.34232659844072866*(JfR[38]+JfR[37])-0.19764235376052366*(JfR[36]+JfR[35]+JfR[34])+0.3423265984407287*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20]+JfR[16])+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*(JfR[5]+JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[1]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.15811388300841892*JfR[46]-0.27386127875258304*(JfR[45]+JfR[44]+JfR[43])+0.15811388300841892*(JfR[42]+JfR[41])-0.273861278752583*JfR[40]+0.15811388300841892*JfR[39]-0.273861278752583*(JfR[38]+JfR[37])+0.15811388300841892*JfR[36]+0.15811388300841894*(JfR[35]+JfR[34])-0.27386127875258304*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.2371708245126284*JfR[30]-0.41079191812887433*(JfR[29]+JfR[28])-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*(JfR[25]+JfR[24])-0.41079191812887433*JfR[23]+0.1767766952966368*JfR[22]-0.3061862178478971*(JfR[21]+JfR[20])+0.2371708245126284*JfR[19]-0.41079191812887433*(JfR[18]+JfR[17])-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*(JfR[14]+JfR[13])-0.3061862178478971*JfR[12]+0.2371708245126284*(JfR[11]+JfR[10])-0.41079191812887433*JfR[9]+0.1767766952966368*JfR[8]-0.3061862178478971*(JfR[7]+JfR[6])+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*(JfR[3]+JfR[2])-0.3061862178478971*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdx2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfy_2x2v_ser_p1.c new file mode 100644 index 0000000000..b93ef24d68 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfy_2x2v_ser_p1.c @@ -0,0 +1,216 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + + double hamil[24] = {0.}; + hamil[0] = (1.4142135623730951*phi[0]-2.4494897427831783*phi[2])*q_+vmapSq[0]*m_+(bmag[0]-1.7320508075688772*bmag[2])*vmap[2]; + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[3])*q_+vmap[2]*(bmag[1]-1.7320508075688772*bmag[3]); + hamil[2] = vmapSq[1]*m_; + hamil[3] = (bmag[0]-1.7320508075688772*bmag[2])*vmap[3]; + hamil[5] = (bmag[1]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[12]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.4841229182759271*JfR[23]-0.4841229182759271*JfR[22]-0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*JfR[12]+0.4330127018922193*JfR[9]+0.25*JfR[8]+0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.3872983346207417*JfR[23])+0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*JfR[15]+0.5809475019311124*JfR[14]+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = -(0.4841229182759271*JfR[23])+0.4841229182759271*JfR[22]+0.2795084971874737*JfR[21]-0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]+0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*JfR[12]-0.4330127018922193*JfR[9]-0.25*JfR[8]+0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[0]-0.3535533905932737*apar[1]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]; + JfR_quad = 0.3872983346207417*JfR[23]-0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]+0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]-0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*JfR[15]-0.5809475019311124*JfR[14]-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]+0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]-0.25*JfR[1]+0.25*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.4841229182759271*(JfR[23]+JfR[22]))+0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]+0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]+0.4330127018922193*(JfR[12]+JfR[9])-0.25*JfR[8]-0.4330127018922193*JfR[5]-0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.3872983346207417*JfR[23]+0.38729833462074165*JfR[22]-0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]-0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]+0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]+0.4330127018922193*JfR[9]-0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]-0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]+0.5809475019311124*(JfR[15]+JfR[14])-0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]+0.5809475019311124*JfR[11]-0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]+0.5809475019311124*JfR[7]-0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = 0.4841229182759271*(JfR[23]+JfR[22])-0.2795084971874737*JfR[21]+0.4841229182759271*JfR[20]-0.2795084971874738*JfR[19]+0.4841229182759271*JfR[18]-0.2795084971874738*JfR[17]-0.2795084971874737*JfR[16]-0.4330127018922193*(JfR[12]+JfR[9])+0.25*JfR[8]-0.4330127018922193*JfR[5]+0.25*JfR[4]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.3535533905932737*apar[1]+0.3535533905932737*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * bhat_quad[1]*(0.6123724356957944*apar[1]*rdx2); + + 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]); + JfR_quad = -(0.3872983346207417*JfR[23])-0.38729833462074165*JfR[22]+0.22360679774997896*JfR[21]-0.38729833462074165*JfR[20]+0.22360679774997894*JfR[19]-0.3872983346207417*JfR[18]+0.22360679774997902*JfR[17]+0.22360679774997896*JfR[16]-0.5809475019311124*(JfR[15]+JfR[14])+0.33541019662496846*JfR[13]-0.4330127018922193*JfR[12]-0.5809475019311124*JfR[11]+0.33541019662496846*JfR[10]-0.4330127018922193*JfR[9]+0.25*JfR[8]-0.5809475019311124*JfR[7]+0.33541019662496846*JfR[6]-0.4330127018922193*JfR[5]+0.25*JfR[4]+0.33541019662496846*JfR[3]-0.4330127018922193*JfR[2]+0.25*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfy_3x2v_ser_p1.c new file mode 100644 index 0000000000..19536db253 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfy_3x2v_ser_p1.c @@ -0,0 +1,373 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[2]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+bmag[0]*vmap[2]; + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[4])*q_+bmag[1]*vmap[2]; + hamil[2] = (1.4142135623730951*phi[3]-2.4494897427831783*phi[6])*q_+vmap[2]*bmag[3]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = bmag[0]*vmap[3]; + hamil[5] = (1.4142135623730951*phi[5]-2.4494897427831783*phi[7])*q_+vmap[2]*bmag[5]; + hamil[8] = bmag[1]*vmap[3]; + hamil[9] = bmag[3]*vmap[3]; + hamil[12] = vmap[3]*bmag[5]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[24]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]-0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]+0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]+0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]-0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]+0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]+0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]+0.3423265984407287*JfR[44]-0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*JfR[36]+0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]-0.27386127875258304*JfR[44]+0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]-0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.19764235376052366*JfR[45]-0.3423265984407287*JfR[44]+0.3423265984407287*JfR[43]+0.19764235376052364*JfR[42]-0.34232659844072866*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]+0.19764235376052366*JfR[36]-0.19764235376052366*JfR[35]+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.3061862178478971*JfR[16]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.15811388300841892*JfR[45]+0.27386127875258304*JfR[44]-0.27386127875258304*JfR[43]-0.15811388300841892*JfR[42]+0.273861278752583*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]-0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.1767766952966368*JfR[21]+0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.1767766952966368*JfR[14]+0.3061862178478971*JfR[13]-0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.2371708245126284*JfR[29]+0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.2371708245126284*JfR[25]+0.41079191812887433*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]+0.41079191812887433*JfR[19]-0.2371708245126284*JfR[18]+0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.2371708245126284*JfR[11]+0.41079191812887433*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.19764235376052366*JfR[45]+0.3423265984407287*(JfR[44]+JfR[43])-0.19764235376052364*JfR[42]+0.34232659844072866*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.19764235376052364*JfR[38]+0.34232659844072866*JfR[37]-0.19764235376052366*(JfR[36]+JfR[35])+0.3423265984407287*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.1767766952966368*JfR[21]-0.3061862178478971*(JfR[20]+JfR[16])+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*(JfR[5]+JfR[3])-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[2]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.15811388300841892*JfR[45]-0.27386127875258304*(JfR[44]+JfR[43])+0.15811388300841892*JfR[42]-0.273861278752583*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.15811388300841892*JfR[38]-0.273861278752583*JfR[37]+0.15811388300841892*JfR[36]+0.15811388300841894*JfR[35]-0.27386127875258304*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.2371708245126284*JfR[29]-0.41079191812887433*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.2371708245126284*JfR[25]-0.41079191812887433*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.1767766952966368*JfR[21]-0.3061862178478971*JfR[20]-0.41079191812887433*JfR[19]+0.2371708245126284*JfR[18]-0.41079191812887433*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.1767766952966368*JfR[14]-0.3061862178478971*JfR[13]+0.1767766952966368*JfR[12]+0.2371708245126284*JfR[11]-0.41079191812887433*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.1767766952966368*JfR[7]-0.3061862178478971*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]+0.1767766952966368*JfR[3]-0.3061862178478971*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdy2; + +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfz_3x2v_ser_p1.c new file mode 100644 index 0000000000..d3b9aa1639 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_em_collisionless_flux_surfz_3x2v_ser_p1.c @@ -0,0 +1,371 @@ +#include +GKYL_CU_DH double gk_em_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 *apar, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // dgs: surface DG geometry. + // gkdgs: gyrokinetic surface DG geometry. + // bmag: bmag represented on the surface. + // 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. + // 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). + // Note: Each cell owns their *lower* edge surface evaluation. + + 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 hamil[48] = {0.}; + hamil[0] = -(2.4494897427831783*phi[3]*q_)+1.4142135623730951*(phi[0]*q_+vmapSq[0]*m_)+vmap[2]*(bmag[0]-1.7320508075688772*bmag[3]); + hamil[1] = (1.4142135623730951*phi[1]-2.4494897427831783*phi[5])*q_+vmap[2]*(bmag[1]-1.7320508075688772*bmag[5]); + hamil[2] = (1.4142135623730951*phi[2]-2.4494897427831783*phi[6])*q_; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = (bmag[0]-1.7320508075688772*bmag[3])*vmap[3]; + hamil[5] = (1.4142135623730951*phi[4]-2.4494897427831783*phi[7])*q_; + hamil[8] = vmap[3]*(bmag[1]-1.7320508075688772*bmag[5]); + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double *flux_surf_nodal = &flux_surf[48]; + double cfl = 0.0; + double bmag_quad = 0.0; + double Jc_quad = 0.0; + double B3_quad = 0.0; + double normcurlbhat_quad = 0.0; + double area_elem_quad = 0.0; + double bhat_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 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 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_; + + bmag_quad = gkdgs[0].bmag; + Jc_quad = gkdgs[0].Jc; + B3_quad = gkdgs[0].B3; + normcurlbhat_quad = gkdgs[0].normcurlbhat; + bhat_quad[0] = gkdgs[0].bhat.x[0]; + bhat_quad[1] = gkdgs[0].bhat.x[1]; + bhat_quad[2] = gkdgs[0].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*(JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])-0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*(JfR[13]+JfR[12])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]-0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])+0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*(JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])+0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*(JfR[2]+JfR[1])+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[5] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[1].bmag; + Jc_quad = gkdgs[1].Jc; + B3_quad = gkdgs[1].B3; + normcurlbhat_quad = gkdgs[1].normcurlbhat; + bhat_quad[0] = gkdgs[1].bhat.x[0]; + bhat_quad[1] = gkdgs[1].bhat.x[1]; + bhat_quad[2] = gkdgs[1].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.34232659844072866*JfR[47]-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*JfR[27]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.273861278752583*JfR[47])+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*JfR[31]+0.41079191812887433*JfR[30]-0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = -(0.34232659844072866*JfR[47])+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]+0.34232659844072866*JfR[39]-0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*JfR[34]+0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*JfR[27]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])+0.25*apar[2]-0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[2]-0.4330127018922193*apar[5])*rdy2) * bhat_quad[0]); + + 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]; + JfR_quad = 0.273861278752583*JfR[47]-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]-0.273861278752583*JfR[39]+0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*JfR[34]-0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*JfR[31]-0.41079191812887433*JfR[30]+0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]-0.3061862178478971*JfR[8]+0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*JfR[2]-0.1767766952966368*JfR[1]+0.1767766952966368*JfR[0]; + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[11] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[2].bmag; + Jc_quad = gkdgs[2].Jc; + B3_quad = gkdgs[2].B3; + normcurlbhat_quad = gkdgs[2].normcurlbhat; + bhat_quad[0] = gkdgs[2].bhat.x[0]; + bhat_quad[1] = gkdgs[2].bhat.x[1]; + bhat_quad[2] = gkdgs[2].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*JfR[46]-0.3423265984407287*JfR[45]-0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]-0.19764235376052364*JfR[41]+0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22])+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*JfR[46]+0.27386127875258304*JfR[45]+0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]+0.15811388300841892*JfR[41]-0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]-0.3061862178478971*JfR[22]+0.3061862178478971*JfR[21]+0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]+0.1767766952966368*JfR[13]-0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30])+0.41079191812887433*JfR[29]+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]+0.2371708245126284*JfR[24]-0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]-0.41079191812887433*JfR[19]+0.41079191812887433*JfR[18]+0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.41079191812887433*JfR[11]+0.2371708245126284*JfR[10]-0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*JfR[46]+0.3423265984407287*JfR[45]+0.19764235376052366*JfR[44]-0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]+0.19764235376052364*JfR[41]-0.19764235376052364*JfR[40]-0.34232659844072866*JfR[39]+0.34232659844072866*JfR[38]+0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]+0.19764235376052366*JfR[34]-0.19764235376052366*JfR[33]-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22])-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.3061862178478971*JfR[16]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (-(0.25*apar[5])-0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[1]-0.4330127018922193*apar[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*JfR[46]-0.27386127875258304*JfR[45]-0.15811388300841892*JfR[44]+0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]-0.15811388300841892*JfR[41]+0.15811388300841892*JfR[40]+0.273861278752583*JfR[39]-0.273861278752583*JfR[38]-0.15811388300841892*JfR[37]+0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]-0.15811388300841894*JfR[34]+0.15811388300841894*JfR[33]+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30])-0.41079191812887433*JfR[29]-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]-0.2371708245126284*JfR[24]+0.2371708245126284*JfR[23]+0.3061862178478971*JfR[22]-0.3061862178478971*JfR[21]-0.1767766952966368*JfR[20]+0.41079191812887433*JfR[19]-0.41079191812887433*JfR[18]-0.2371708245126284*JfR[17]+0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]-0.1767766952966368*JfR[13]+0.1767766952966368*JfR[12]-0.41079191812887433*JfR[11]-0.2371708245126284*JfR[10]+0.2371708245126284*JfR[9]+0.3061862178478971*JfR[8]-0.3061862178478971*JfR[7]-0.1767766952966368*JfR[6]+0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]-0.1767766952966368*JfR[2]+0.1767766952966368*(JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[17] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + bmag_quad = gkdgs[3].bmag; + Jc_quad = gkdgs[3].Jc; + B3_quad = gkdgs[3].B3; + normcurlbhat_quad = gkdgs[3].normcurlbhat; + bhat_quad[0] = gkdgs[3].bhat.x[0]; + bhat_quad[1] = gkdgs[3].bhat.x[1]; + bhat_quad[2] = gkdgs[3].bhat.x[2]; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]+0.41079191812887433*JfR[26]-0.41079191812887433*JfR[25]+0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.34232659844072866*JfR[47])-0.3423265984407287*(JfR[46]+JfR[45])+0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]-0.34232659844072866*JfR[42]+0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]+0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]+0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.3061862178478971*JfR[16]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.273861278752583*JfR[47]+0.27386127875258304*(JfR[46]+JfR[45])-0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]+0.273861278752583*JfR[42]-0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*JfR[37]-0.15811388300841892*JfR[36]-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]+0.3061862178478971*JfR[27]-0.41079191812887433*JfR[26]+0.41079191812887433*JfR[25]-0.2371708245126284*(JfR[24]+JfR[23])+0.3061862178478971*(JfR[22]+JfR[21])-0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]+0.3061862178478971*JfR[14]-0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*JfR[6]-0.1767766952966368*JfR[5]+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[0]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[0]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]+0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])-0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]+0.41079191812887433*(JfR[26]+JfR[25])-0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]+0.41079191812887433*(JfR[19]+JfR[18])-0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]-0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])+0.41079191812887433*JfR[11]-0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[1]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[1]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = 0.34232659844072866*JfR[47]+0.3423265984407287*(JfR[46]+JfR[45])-0.19764235376052366*JfR[44]+0.3423265984407287*JfR[43]+0.34232659844072866*JfR[42]-0.19764235376052364*(JfR[41]+JfR[40])+0.34232659844072866*(JfR[39]+JfR[38])-0.19764235376052364*JfR[37]-0.19764235376052366*JfR[36]+0.3423265984407287*JfR[35]-0.19764235376052366*(JfR[34]+JfR[33])-0.19764235376052364*JfR[32]-0.3061862178478971*(JfR[27]+JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.3061862178478971*(JfR[16]+JfR[14])+0.1767766952966368*(JfR[13]+JfR[12])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + 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 += mvpar_quad[2]/(m_*bmag_quad) * (0.25*apar[5]+0.25*apar[2]+0.25*apar[1]+0.25*apar[0]) * normcurlbhat_quad; + alpha_quad += mvpar_quad[2]/(m_*bmag_quad) * (((0.4330127018922193*apar[5]+0.4330127018922193*apar[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar[5]+0.4330127018922193*apar[2])*rdy2) * bhat_quad[0]); + + 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]); + JfR_quad = -(0.273861278752583*JfR[47])-0.27386127875258304*(JfR[46]+JfR[45])+0.15811388300841892*JfR[44]-0.27386127875258304*JfR[43]-0.273861278752583*JfR[42]+0.15811388300841892*(JfR[41]+JfR[40])-0.273861278752583*(JfR[39]+JfR[38])+0.15811388300841892*(JfR[37]+JfR[36])-0.27386127875258304*JfR[35]+0.15811388300841894*(JfR[34]+JfR[33])+0.15811388300841892*JfR[32]-0.41079191812887433*(JfR[31]+JfR[30]+JfR[29])+0.2371708245126284*JfR[28]-0.3061862178478971*JfR[27]-0.41079191812887433*(JfR[26]+JfR[25])+0.2371708245126284*(JfR[24]+JfR[23])-0.3061862178478971*(JfR[22]+JfR[21])+0.1767766952966368*JfR[20]-0.41079191812887433*(JfR[19]+JfR[18])+0.2371708245126284*JfR[17]-0.3061862178478971*JfR[16]+0.2371708245126284*JfR[15]-0.3061862178478971*JfR[14]+0.1767766952966368*(JfR[13]+JfR[12])-0.41079191812887433*JfR[11]+0.2371708245126284*(JfR[10]+JfR[9])-0.3061862178478971*(JfR[8]+JfR[7])+0.1767766952966368*(JfR[6]+JfR[5])+0.2371708245126284*JfR[4]-0.3061862178478971*JfR[3]+0.1767766952966368*(JfR[2]+JfR[1]+JfR[0]); + Jfavg_quad = (JfL_quad + JfR_quad)/2.0; + Jfjump_quad = (JfR_quad - JfL_quad)/2.0; + flux_surf_nodal[23] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; + + + return cfl*1.5*rdz2; + +} 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..bf3aa0d71e 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,1232 @@ 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 *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 *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 *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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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 *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 *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 *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 *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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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); + 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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_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 *apar, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_em_collisionless_flux_add_apardot_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 *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_collisionless_flux_surf_return_zero( + 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 *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); EXTERN_C_END diff --git a/gyrokinetic/zero/calc_metric.c b/gyrokinetic/zero/calc_metric.c index bea904afe8..9943e884cf 100644 --- a/gyrokinetic/zero/calc_metric.c +++ b/gyrokinetic/zero/calc_metric.c @@ -1283,6 +1283,8 @@ void gkyl_calc_metric_advance_interior(gkyl_calc_metric *up, struct gk_geometry double Jsq = gFld_n[0]*(gFld_n[3]*gFld_n[5] - gFld_n[4]*gFld_n[4] ) - 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 4a6a884e0f..649ce45418 100644 --- a/gyrokinetic/zero/dg_gyrokinetic.c +++ b/gyrokinetic/zero/dg_gyrokinetic.c @@ -46,13 +46,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, double skip_cell_threshold, enum gkyl_gk_collisionless_type collless_type, + const double charge, const double mass, double skip_cell_threshold, + enum gkyl_gk_collisionless_type collless_type, const bool no_by, const bool only_apardot, 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, skip_cell_threshold, collless_type, gk_geom, vel_map); + charge, mass, skip_cell_threshold, collless_type, no_by, only_apardot, gk_geom, vel_map); #endif struct dg_gyrokinetic *gyrokinetic = gkyl_malloc(sizeof(struct dg_gyrokinetic)); @@ -77,6 +79,8 @@ gkyl_dg_gyrokinetic_new(const struct gkyl_basis *cbasis, const struct gkyl_basis 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_add_apar_kern_list *vol_add_apar_kernels; + const gkyl_dg_gyrokinetic_vol_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; @@ -89,6 +93,8 @@ 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_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; @@ -106,12 +112,19 @@ 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); - } - else if (collless_type == GKYL_GK_COLLISIONLESS_ES_NO_BY) { + if (no_by) { gyrokinetic->eqn.vol_term = CK(vol_no_by_kernels,cdim,vdim,poly_order); } + else { + if (only_apardot) + gyrokinetic->eqn.vol_term = CK(vol_add_apardot_kernels,cdim,vdim,poly_order); + else + gyrokinetic->eqn.vol_term = CK(vol_kernels,cdim,vdim,poly_order); + } + + gyrokinetic->vol_add_apar_term = + (collless_type == GKYL_GK_COLLISIONLESS_EM) || (collless_type == GKYL_GK_COLLISIONLESS_EM_BPERP) ? + CK(vol_add_apar_kernels,cdim,vdim,poly_order) : dg_gyrokinetic_vol_return_zero; gyrokinetic->surf[0] = CK(surf_x_kernels,cdim,vdim,poly_order); if (cdim>1) diff --git a/gyrokinetic/zero/dg_gyrokinetic_cu.cu b/gyrokinetic/zero/dg_gyrokinetic_cu.cu index 4f8de2ac59..9185081a60 100644 --- a/gyrokinetic/zero/dg_gyrokinetic_cu.cu +++ b/gyrokinetic/zero/dg_gyrokinetic_cu.cu @@ -37,7 +37,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 only_apardot) { gyrokinetic->auxfields.flux_surf = 0; gyrokinetic->auxfields.phi = 0; @@ -49,6 +50,8 @@ dg_gyrokinetic_set_cu_dev_ptrs(struct dg_gyrokinetic *gyrokinetic, enum gkyl_bas 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_add_apar_kern_list *vol_add_apar_kernels; + const gkyl_dg_gyrokinetic_vol_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,6 +64,8 @@ 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_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; @@ -79,12 +84,19 @@ dg_gyrokinetic_set_cu_dev_ptrs(struct dg_gyrokinetic *gyrokinetic, enum gkyl_bas break; } - if (collless_type == GKYL_GK_COLLISIONLESS_ES) { - gyrokinetic->eqn.vol_term = vol_kernels[cv_index].kernels[poly_order]; - } - else if (collless_type == GKYL_GK_COLLISIONLESS_ES_NO_BY) { + if (no_by) { gyrokinetic->eqn.vol_term = vol_no_by_kernels[cv_index].kernels[poly_order]; } + else { + if (only_apardot) + gyrokinetic->eqn.vol_term = vol_add_apardot_kernels[cv_index].kernels[poly_order]; + else + gyrokinetic->eqn.vol_term = vol_kernels[cv_index].kernels[poly_order]; + } + + gyrokinetic->vol_add_apar_term = + ((collless_type == GKYL_GK_COLLISIONLESS_EM) || (collless_type == GKYL_GK_COLLISIONLESS_EM_BPERP)) ? + vol_add_apar_kernels[cv_index].kernels[poly_order] : dg_gyrokinetic_vol_return_zero; gyrokinetic->surf[0] = surf_x_kernels[cv_index].kernels[poly_order]; if (cdim>1) @@ -106,7 +118,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, double skip_cell_threshold, 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 only_apardot, const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map) { struct dg_gyrokinetic *gyrokinetic = (struct dg_gyrokinetic*) gkyl_malloc(sizeof(*gyrokinetic)); @@ -144,7 +156,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, only_apardot); // set parent on_dev pointer gyrokinetic->eqn.on_dev = &gyrokinetic_cu->eqn; @@ -154,4 +166,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 5dc875fd80..80e204c622 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, double skip_cell_threshold, - 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 only_apardot, 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,7 +30,7 @@ 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, skip_cell_threshold, collless_type, gk_geom, vel_map, up->use_gpu); + charge, mass, skip_cell_threshold, collless_type, no_by, only_apardot, 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); diff --git a/gyrokinetic/zero/fem_poisson_perp.c b/gyrokinetic/zero/fem_poisson_perp.c index 96085bb331..dff3fd154a 100644 --- a/gyrokinetic/zero/fem_poisson_perp.c +++ b/gyrokinetic/zero/fem_poisson_perp.c @@ -2,6 +2,8 @@ #include #include +void gkyl_fem_poisson_perp_build_stiffness_matrix(struct gkyl_fem_poisson_perp *up); + struct gkyl_fem_poisson_perp* gkyl_fem_poisson_perp_new(const struct gkyl_range *solve_range, const struct gkyl_rect_grid *grid, const struct gkyl_basis basis, struct gkyl_poisson_bc *bcs, struct gkyl_array *epsilon, @@ -27,17 +29,17 @@ gkyl_fem_poisson_perp_new(const struct gkyl_range *solve_range, const struct gky // We assume epsilon and kSq live on the device, and we create a host-side // copies temporarily to compute the LHS matrix. This also works for CPU solves. - struct gkyl_array *epsilon_ho = gkyl_array_new(GKYL_DOUBLE, up->epsilon->ncomp, up->epsilon->size); - gkyl_array_copy(epsilon_ho, up->epsilon); - struct gkyl_array *kSq_ho; + up->epsilon_ho = gkyl_array_new(GKYL_DOUBLE, up->epsilon->ncomp, up->epsilon->size); + gkyl_array_copy(up->epsilon_ho, up->epsilon); if (kSq) { up->ishelmholtz = true; - kSq_ho = gkyl_array_new(GKYL_DOUBLE, kSq->ncomp, kSq->size); - gkyl_array_copy(kSq_ho, kSq); + up->kSq = gkyl_array_acquire(kSq); + up->kSq_ho = gkyl_array_new(GKYL_DOUBLE, up->kSq->ncomp, up->kSq->size); + gkyl_array_copy(up->kSq_ho, up->kSq); } else { up->ishelmholtz = false; - kSq_ho = gkyl_array_new(GKYL_DOUBLE, up->num_basis, 1); - gkyl_array_clear(kSq_ho, 0.); + up->kSq_ho = gkyl_array_new(GKYL_DOUBLE, up->num_basis, 1); + gkyl_array_clear(up->kSq_ho, 0.); } up->globalidx = gkyl_malloc(sizeof(long[up->num_basis])); // global index, one for each basis in a cell. @@ -177,14 +179,22 @@ gkyl_fem_poisson_perp_new(const struct gkyl_range *solve_range, const struct gky up->prob = gkyl_superlu_prob_new(up->par_range.volume, up->numnodes_global, up->numnodes_global, 1); #endif - struct gkyl_mat_triples **tri = gkyl_malloc(up->par_range.volume*sizeof(struct gkyl_mat_triples *)); + up->tri = gkyl_malloc(up->par_range.volume*sizeof(struct gkyl_mat_triples *)); for (size_t i=0; ipar_range.volume; i++) { - tri[i] = gkyl_mat_triples_new(up->numnodes_global, up->numnodes_global); + up->tri[i] = gkyl_mat_triples_new(up->numnodes_global, up->numnodes_global); #ifdef GKYL_HAVE_CUDA - if (up->use_gpu) gkyl_mat_triples_set_rowmaj_order(tri[i]); + if (up->use_gpu) gkyl_mat_triples_set_rowmaj_order(up->tri[i]); #endif } + gkyl_fem_poisson_perp_build_stiffness_matrix(up); + + return up; +} + +void +gkyl_fem_poisson_perp_build_stiffness_matrix(struct gkyl_fem_poisson_perp *up) +{ // Assign non-zero elements in A. int idx0[GKYL_MAX_CDIM], idx1[GKYL_MAX_CDIM]; gkyl_range_iter_init(&up->par_iter1d, &up->par_range1d); @@ -193,15 +203,14 @@ gkyl_fem_poisson_perp_new(const struct gkyl_range *solve_range, const struct gky gkyl_range_iter_init(&up->perp_iter2d, &up->perp_range2d); while (gkyl_range_iter_next(&up->perp_iter2d)) { - long perpidx = gkyl_range_idx(&up->perp_range2d, up->perp_iter2d.idx); for (size_t d=0; dndim_perp; d++) idx1[d] = up->perp_iter2d.idx[d]; idx1[up->pardir] = up->par_iter1d.idx[0]; long linidx = gkyl_range_idx(up->solve_range, idx1); - double *eps_p = gkyl_array_fetch(epsilon_ho, linidx); - double *kSq_p = up->ishelmholtz? gkyl_array_fetch(kSq_ho, linidx) : gkyl_array_fetch(kSq_ho,0); + double *eps_p = gkyl_array_fetch(up->epsilon_ho, linidx); + double *kSq_p = up->ishelmholtz? gkyl_array_fetch(up->kSq_ho, linidx) : gkyl_array_fetch(up->kSq_ho,0); int keri = idx_to_inup_ker(up->ndim_perp, up->num_cells, up->perp_iter2d.idx); for (size_t d=0; dndim; d++) idx0[d] = idx1[d] - 1; @@ -209,26 +218,40 @@ gkyl_fem_poisson_perp_new(const struct gkyl_range *solve_range, const struct gky // Apply the -nabla . (epsilon*nabla_perp)-kSq stencil. keri = idx_to_inloup_ker(up->ndim_perp, up->num_cells, idx1); - up->kernels->lhsker[keri](eps_p, kSq_p, up->dx, up->bcvals, up->globalidx, tri[paridx]); + up->kernels->lhsker[keri](eps_p, kSq_p, up->dx, up->bcvals, up->globalidx, up->tri[paridx]); } } #ifdef GKYL_HAVE_CUDA if (up->use_gpu) - gkyl_culinsolver_amat_from_triples(up->prob_cu, tri); + gkyl_culinsolver_amat_from_triples(up->prob_cu, up->tri); else - gkyl_superlu_amat_from_triples(up->prob, tri); + gkyl_superlu_amat_from_triples(up->prob, up->tri); #else - gkyl_superlu_amat_from_triples(up->prob, tri); + gkyl_superlu_amat_from_triples(up->prob, up->tri); #endif + + up->make_stiff = false; // Reset the flag. +} - for (size_t i=0; ipar_range.volume; i++) - gkyl_mat_triples_release(tri[i]); - gkyl_free(tri); +void +gkyl_fem_poisson_perp_update_epsilon(struct gkyl_fem_poisson_perp *up, struct gkyl_array *epsilon) +{ + gkyl_array_release(up->epsilon); + up->epsilon = gkyl_array_acquire(epsilon); + gkyl_array_copy(up->epsilon_ho, up->epsilon); - gkyl_array_release(epsilon_ho); - gkyl_array_release(kSq_ho); + up->make_stiff = true; // Need to remake the stiffness matrix. +} - return up; +void +gkyl_fem_poisson_perp_update_kSq(struct gkyl_fem_poisson_perp *up, struct gkyl_array *kSq) +{ + assert(up->ishelmholtz); + gkyl_array_release(up->kSq); + up->kSq = gkyl_array_acquire(kSq); + gkyl_array_copy(up->kSq_ho, up->kSq); + + up->make_stiff = true; // Need to remake the stiffness matrix. } void @@ -310,6 +333,13 @@ gkyl_fem_poisson_perp_set_rhs(gkyl_fem_poisson_perp *up, struct gkyl_array *rhsi void gkyl_fem_poisson_perp_solve(gkyl_fem_poisson_perp *up, struct gkyl_array *phiout) { + + // Check if we need to rebuild the stiffness matrix (if epsilon or kSq got updated). + if (up->make_stiff) { + assert(false); // AH Oct 15, 2025: This call is not valgrind clean. It seems that we cannot rebuild the matrix that easily. + gkyl_fem_poisson_perp_build_stiffness_matrix(up); + } + #ifdef GKYL_HAVE_CUDA if (up->use_gpu) { assert(gkyl_array_is_cu_dev(phiout)); @@ -376,5 +406,12 @@ void gkyl_fem_poisson_perp_release(struct gkyl_fem_poisson_perp *up) gkyl_free(up->perp_range); gkyl_free(up->globalidx); gkyl_array_release(up->epsilon); + gkyl_array_release(up->epsilon_ho); + if (up->ishelmholtz) + gkyl_array_release(up->kSq); + gkyl_array_release(up->kSq_ho); + for (size_t i=0; ipar_range.volume; i++) + gkyl_mat_triples_release(up->tri[i]); + gkyl_free(up->tri); gkyl_free(up); } diff --git a/gyrokinetic/zero/gk_collisionless_flux.c b/gyrokinetic/zero/gk_collisionless_flux.c index 6ea95a5e3e..e9af9a8813 100644 --- a/gyrokinetic/zero/gk_collisionless_flux.c +++ b/gyrokinetic/zero/gk_collisionless_flux.c @@ -13,14 +13,14 @@ gkyl_gk_collisionless_flux* 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 type, - const struct gk_geometry *gk_geom, const struct gkyl_dg_geom *dg_geom, + const bool no_by, const bool only_apardot, 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) { #ifdef GKYL_HAVE_CUDA if (use_gpu) return gkyl_gk_collisionless_flux_cu_dev_new(phase_grid, conf_basis, phase_basis, - charge, mass, type, gk_geom, dg_geom, gk_dg_geom, vel_map, bctype_conf); + charge, mass, type, no_by, only_apardot, gk_geom, dg_geom, gk_dg_geom, vel_map, bctype_conf); #endif gkyl_gk_collisionless_flux *up = gkyl_malloc(sizeof(gkyl_gk_collisionless_flux)); @@ -35,32 +35,44 @@ gkyl_gk_collisionless_flux_new(const struct gkyl_rect_grid *phase_grid, up->charge = charge; up->mass = mass; + up->only_apardot = only_apardot; up->gk_geom = gkyl_gk_geometry_acquire(gk_geom); up->dg_geom = gkyl_dg_geom_acquire(dg_geom); up->gk_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) { + // Choose appropriate kernels. + if (only_apardot){ + // If we only add Apardot terms to the flux, the only non zero kernel is the vpar one. 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]); - up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_edge_surf_conf_kern(d, cdim, vdim, - poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + up->flux_surf[d] = gk_collisionless_flux_surf_return_zero; + up->flux_surf_edge_lo[d] = gk_collisionless_flux_surf_return_zero; + up->flux_surf_edge_up[d] = gk_collisionless_flux_surf_return_zero; } - 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]); + up->flux_surfvpar[0] = choose_gk_collisionless_flux_add_apardot_surf_vpar_kern(cdim, vdim, poly_order); + } else { + int em = ((type == GKYL_GK_COLLISIONLESS_EM) || (type == GKYL_GK_COLLISIONLESS_EM_BPERP)) ? 1 : 0; + if (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(em, 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(em, d, cdim, vdim, + poly_order, bctype_conf[d]); + up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(em, d, cdim, vdim, + poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + } + up->flux_surfvpar[0] = choose_gk_collisionless_flux_no_by_surf_vpar_kern(em, cdim, vdim, poly_order); + } else { // The Apar term is included in the kernels. If we are ES, Apar=0. + 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(em, d, cdim, vdim, poly_order, GKYL_BC_GK_SPECIES_ABSORB); + up->flux_surf_edge_lo[d] = choose_gk_collisionless_flux_surf_conf_kern(em, d, cdim, vdim, + poly_order, bctype_conf[d]); + up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_edge_surf_conf_kern(em, d, cdim, vdim, + poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + } + up->flux_surfvpar[0] = choose_gk_collisionless_flux_surf_vpar_kern(em, cdim, vdim, poly_order); } - up->flux_surfvpar[0] = choose_gk_collisionless_flux_no_by_surf_vpar_kern(cdim, vdim, poly_order); } up->flags = 0; @@ -72,13 +84,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 *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, fin, flux_surf, cflrate); } #endif int pdim = up->pdim; @@ -109,6 +122,7 @@ 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 *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); @@ -132,11 +146,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, 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, fL, fR, flux_surf_d); } // Upper domain/block boundary. @@ -163,7 +177,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, fL, fR, flux_surf_ext_d); } } } @@ -182,6 +196,7 @@ 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 *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); @@ -204,10 +219,8 @@ 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, fL, fR, flux_surf_d); } - - } void gkyl_gk_collisionless_flux_release(gkyl_gk_collisionless_flux *up) diff --git a/gyrokinetic/zero/gk_collisionless_flux_cu.cu b/gyrokinetic/zero/gk_collisionless_flux_cu.cu index 2d95e67072..4af0b95b54 100644 --- a/gyrokinetic/zero/gk_collisionless_flux_cu.cu +++ b/gyrokinetic/zero/gk_collisionless_flux_cu.cu @@ -18,7 +18,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 *fin, struct gkyl_array* flux_surf, struct gkyl_array *cflrate) + const struct gkyl_array *apar, const struct gkyl_array *fin, struct gkyl_array* flux_surf, struct gkyl_array *cflrate) { int pdim = up->pdim; int cdim = up->cdim; @@ -47,6 +47,7 @@ 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 *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); @@ -70,11 +71,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, 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, fL, fR, flux_surf_d); } // If the phase space index is at the local configuration space upper value, we @@ -100,7 +101,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, fL, fR, flux_surf_ext_d); } } } @@ -110,7 +111,7 @@ __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, + const struct gkyl_array *phi, const struct gkyl_array *apar, const struct gkyl_array *fin, struct gkyl_array* flux_surf, struct gkyl_array *cflrate) { int pdim = up->pdim; @@ -141,6 +142,7 @@ 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 *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); @@ -166,7 +168,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, fL, fR, flux_surf_d); } } @@ -174,10 +176,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 *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, fin->on_dev, flux_surf->on_dev, cflrate->on_dev); struct gkyl_range vpar_range; @@ -190,7 +192,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, fin->on_dev, flux_surf->on_dev, cflrate->on_dev); } @@ -199,37 +201,48 @@ 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, + bool em, int cdim, int vdim, int poly_order, enum gkyl_gk_collisionless_type type, + bool no_by, bool only_apardot, const enum gkyl_gyrokinetic_bc_type *bctype_conf) { - if (type == GKYL_GK_COLLISIONLESS_ES) { + if (only_apardot){ + // If we only add Apardot terms to the flux, the only non zero kernel is the vpar one. 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]); - up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_edge_surf_conf_kern(d, cdim, vdim, - poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + up->flux_surf[d] = gk_collisionless_flux_surf_return_zero; + up->flux_surf_edge_lo[d] = gk_collisionless_flux_surf_return_zero; + up->flux_surf_edge_up[d] = gk_collisionless_flux_surf_return_zero; } - 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]); + up->flux_surfvpar[0] = choose_gk_collisionless_flux_add_apardot_surf_vpar_kern(cdim, vdim, poly_order); + } else { + if (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(em, 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(em, d, cdim, vdim, + poly_order, bctype_conf[d]); + up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(em, d, cdim, vdim, + poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + } + up->flux_surfvpar[0] = choose_gk_collisionless_flux_no_by_surf_vpar_kern(em, cdim, vdim, poly_order); + } else { // The Apar term is included in the kernels. If we are ES, Apar=0. + 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(em, d, cdim, vdim, poly_order, GKYL_BC_GK_SPECIES_ABSORB); + up->flux_surf_edge_lo[d] = choose_gk_collisionless_flux_surf_conf_kern(em, d, cdim, vdim, + poly_order, bctype_conf[d]); + up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_edge_surf_conf_kern(em, d, cdim, vdim, + poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + } + up->flux_surfvpar[0] = choose_gk_collisionless_flux_surf_vpar_kern(em, cdim, vdim, poly_order); } - up->flux_surfvpar[0] = choose_gk_collisionless_flux_no_by_surf_vpar_kern(cdim, vdim, poly_order); } } 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, + const double charge, const double mass, enum gkyl_gk_collisionless_type type, + const bool no_by, const bool only_apardot, 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) @@ -246,6 +259,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) || (type == GKYL_GK_COLLISIONLESS_EM_BPERP)) ? 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); @@ -267,7 +281,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, only_apardot, bctype_conf_dev); gkyl_cu_free(bctype_conf_dev); @@ -281,4 +295,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..be48188840 100644 --- a/gyrokinetic/zero/gk_dg_geom.c +++ b/gyrokinetic/zero/gk_dg_geom.c @@ -160,6 +160,15 @@ 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| } } } diff --git a/gyrokinetic/zero/gk_geometry.c b/gyrokinetic/zero/gk_geometry.c index c05d209e15..83a6082942 100644 --- a/gyrokinetic/zero/gk_geometry.c +++ b/gyrokinetic/zero/gk_geometry.c @@ -442,6 +442,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 f4ada736a3..fe5581fa6d 100644 --- a/gyrokinetic/zero/gkyl_dg_gyrokinetic.h +++ b/gyrokinetic/zero/gkyl_dg_gyrokinetic.h @@ -28,6 +28,8 @@ struct gkyl_dg_gyrokinetic_auxfields { * @param mass Species mass * @param skip_cell_threshold Threshold for skipping cells in the gyrokinetic equation * @param collless_type Type of collisionless terms. + * @param no_by Whether to neglect the toroidal field (set b_y=0). + * @param only_apardot Whether we want to only add the apardot term. * @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 @@ -36,9 +38,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, double skip_cell_threshold, - 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 only_apardot, 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 e556f3ae55..62687abb43 100644 --- a/gyrokinetic/zero/gkyl_dg_gyrokinetic_priv.h +++ b/gyrokinetic/zero/gkyl_dg_gyrokinetic_priv.h @@ -12,6 +12,16 @@ #include // Types for various kernels. +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 *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 *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 *b_i, const double *phi, + 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 +43,7 @@ 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_add_apar_t kernels[3]; } gkyl_dg_gyrokinetic_vol_add_apar_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 +51,7 @@ struct dg_gyrokinetic { struct gkyl_dg_eqn eqn; // Base object. int cdim; // Config-space dimensions. int pdim; // Phase-space dimensions. + dg_gyrokinetic_vol_add_apar_t vol_add_apar_term; // 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. @@ -74,7 +86,8 @@ 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, + double cfl = 0.0; + cfl = 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, @@ -84,6 +97,17 @@ kernel_dg_gyrokinetic_vol_1x1v_ser_p1(const struct gkyl_dg_eqn *eqn, const doubl (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); + cfl += gyrokinetic->vol_add_apar_term(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->gk_geom->geo_int.jacobtot_inv, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.b_i, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apar, cidx), + qIn, qRhsOut); + return cfl; } GKYL_CU_DH @@ -103,7 +127,8 @@ kernel_dg_gyrokinetic_vol_1x2v_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_1x2v_ser_p1(xc, dx, + double cfl = 0.0; + cfl = 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, @@ -113,6 +138,17 @@ kernel_dg_gyrokinetic_vol_1x2v_ser_p1(const struct gkyl_dg_eqn *eqn, const doubl (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); + cfl += gyrokinetic->vol_add_apar_term(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->gk_geom->geo_int.jacobtot_inv, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.b_i, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apar, cidx), + qIn, qRhsOut); + return cfl; } GKYL_CU_DH @@ -132,7 +168,8 @@ kernel_dg_gyrokinetic_vol_2x2v_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_2x2v_ser_p1(xc, dx, + double cfl = 0.0; + cfl = 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, @@ -142,6 +179,17 @@ kernel_dg_gyrokinetic_vol_2x2v_ser_p1(const struct gkyl_dg_eqn *eqn, const doubl (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); + cfl += gyrokinetic->vol_add_apar_term(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->gk_geom->geo_int.jacobtot_inv, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.b_i, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apar, cidx), + qIn, qRhsOut); + return cfl; } GKYL_CU_DH @@ -161,7 +209,8 @@ kernel_dg_gyrokinetic_vol_3x2v_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_3x2v_ser_p1(xc, dx, + double cfl = 0.0; + cfl = 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, @@ -171,6 +220,17 @@ kernel_dg_gyrokinetic_vol_3x2v_ser_p1(const struct gkyl_dg_eqn *eqn, const doubl (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); + cfl += gyrokinetic->vol_add_apar_term(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->gk_geom->geo_int.jacobtot_inv, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.b_i, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apar, cidx), + qIn, qRhsOut); + return cfl; } // Volume kernel list. @@ -260,6 +320,152 @@ static const gkyl_dg_gyrokinetic_vol_kern_list ser_no_by_vol_kernels[] = { { NULL, kernel_dg_gyrokinetic_no_by_vol_3x2v_ser_p1, NULL }, // 3 }; +// 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 +}; + +GKYL_CU_DH +static double +kernel_dg_gyrokinetic_add_apardot_vol_1x1v_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); + + if (fabs(qIn[0]) < gyrokinetic->skip_cell_thresh) { + 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); + return dg_gyrokinetic_add_apardot_vol_1x1v_ser_p1( + (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), + gyrokinetic->charge, gyrokinetic->mass, + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apardot, cidx), + qIn, qRhsOut); +} + +GKYL_CU_DH +static double +kernel_dg_gyrokinetic_add_apardot_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); + + if (fabs(qIn[0]) < gyrokinetic->skip_cell_thresh) { + 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); + return dg_gyrokinetic_add_apardot_vol_1x2v_ser_p1( + (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), + gyrokinetic->charge, gyrokinetic->mass, + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apardot, cidx), + qIn, qRhsOut); +} + +GKYL_CU_DH +static double +kernel_dg_gyrokinetic_add_apardot_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); + + if (fabs(qIn[0]) < gyrokinetic->skip_cell_thresh) { + 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); + return dg_gyrokinetic_add_apardot_vol_2x2v_ser_p1( + (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), + gyrokinetic->charge, gyrokinetic->mass, + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apardot, cidx), + qIn, qRhsOut); +} + +GKYL_CU_DH +static double +kernel_dg_gyrokinetic_add_apardot_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); + + if (fabs(qIn[0]) < gyrokinetic->skip_cell_thresh) { + 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); + return dg_gyrokinetic_add_apardot_vol_3x2v_ser_p1( + (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), + gyrokinetic->charge, gyrokinetic->mass, + (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apardot, cidx), + qIn, qRhsOut); +} + +// Electromagnetic volume kernel list (apardot). +GKYL_CU_D +static const gkyl_dg_gyrokinetic_vol_kern_list ser_add_apardot_vol_kernels[] = { + // 1x kernels + { NULL, kernel_dg_gyrokinetic_add_apardot_vol_1x1v_ser_p1, NULL }, // 0 + { NULL, kernel_dg_gyrokinetic_add_apardot_vol_1x2v_ser_p1, NULL }, // 1 + // 2x kernels + { NULL, kernel_dg_gyrokinetic_add_apardot_vol_2x2v_ser_p1, NULL }, // 2 + // 3x kernels + { NULL, kernel_dg_gyrokinetic_add_apardot_vol_3x2v_ser_p1, NULL }, // 3 +}; + +// To turn off EM effects: +GKYL_CU_DH +static double +dg_gyrokinetic_vol_return_zero(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 *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_return_zero(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); + + if (fabs(qIn[0]) < gyrokinetic->skip_cell_thresh) { + 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); + return dg_gyrokinetic_vol_return_zero(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); +} + // // Serendipity surface kernels general geometry // @@ -470,7 +676,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, double skip_if_smaller_than, 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 only_apardot, 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 c1dfa9793b..619bfed7d5 100644 --- a/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic.h +++ b/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic.h @@ -30,6 +30,8 @@ struct gkyl_dg_updater_gyrokinetic_tm { * @param mass Species mass * @param skip_cell_threshold Threshold for skipping cells in the gyrokinetic equation * @param collless_type Type of collisionless terms. + * @param no_by Whether to neglect the toroidal field (set b_y=0). + * @param only_apardot Whether we want to only add the apardot term. * @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 @@ -40,8 +42,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, double skip_cell_threshold, - 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 only_apardot, + const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map, void *aux_inp, bool use_gpu); /** * Acquire gyrokinetic equation object. @@ -69,6 +71,19 @@ void gkyl_dg_updater_gyrokinetic_advance(gkyl_dg_updater_gyrokinetic *gyrokineti const struct gkyl_range *update_rng, const struct gkyl_array* GKYL_RESTRICT fIn, struct gkyl_array* GKYL_RESTRICT cflrate, struct gkyl_array* GKYL_RESTRICT rhs); +/** + * Add Apardot electromagnetic contribution to the RHS. + * + * @param gyrokinetic + * @param update_rng + * @param fIn + * @param cflrate + * @param rhs + */ +void gkyl_dg_updater_gyrokinetic_add_apardot(gkyl_dg_updater_gyrokinetic *gyrokinetic, + const struct gkyl_range *update_rng, const struct gkyl_array* GKYL_RESTRICT fIn, + struct gkyl_array* GKYL_RESTRICT cflrate, struct gkyl_array* GKYL_RESTRICT rhs); + /** * Return total time spent in gyrokinetic equation * 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_fem_poisson_perp.h b/gyrokinetic/zero/gkyl_fem_poisson_perp.h index c5e7166836..9821be893f 100644 --- a/gyrokinetic/zero/gkyl_fem_poisson_perp.h +++ b/gyrokinetic/zero/gkyl_fem_poisson_perp.h @@ -40,6 +40,28 @@ struct gkyl_fem_poisson_perp* gkyl_fem_poisson_perp_new( const struct gkyl_basis basis, struct gkyl_poisson_bc *bcs, struct gkyl_array *epsilon, struct gkyl_array *kSq, bool use_gpu); +/** + * Update the epsilon array and set the make_stiff flag to true to recompute stiffness + * matrix at the next solve call. + * + * @param up updater to solver. + * @param epsilon new epsilon array. + */ +void +gkyl_fem_poisson_perp_update_epsilon(struct gkyl_fem_poisson_perp *up, struct gkyl_array *epsilon); + +/** + * Update the kSq array and set the make_stiff flag to true to recompute stiffness + * matrix at the next solve call. The kSq must be passed as a non Null pointer to array + * in the gkyl_fem_poisson_perp_new call. + * + * @param up updater to solver. + * @param kSq new kSq array. + */ +void +gkyl_fem_poisson_perp_update_kSq(struct gkyl_fem_poisson_perp *up, struct gkyl_array *kSq); + + /** * Assign the right-side vector with the discontinuous (DG) source field. * diff --git a/gyrokinetic/zero/gkyl_fem_poisson_perp_priv.h b/gyrokinetic/zero/gkyl_fem_poisson_perp_priv.h index 48d28084af..583df01f6f 100644 --- a/gyrokinetic/zero/gkyl_fem_poisson_perp_priv.h +++ b/gyrokinetic/zero/gkyl_fem_poisson_perp_priv.h @@ -461,7 +461,12 @@ struct gkyl_fem_poisson_perp { bool isdirperiodic[GKYL_MAX_DIM]; // =true if direction is periodic. struct gkyl_array *epsilon; // Permittivity. + struct gkyl_array *epsilon_ho; // Permittivity on host. + struct gkyl_array *kSq; // k squared (Helmholtz term). + struct gkyl_array *kSq_ho; // k square on host. bool ishelmholtz; // If solving Helmholtz equation (kSq is not zero/NULL). + bool make_stiff; // Flag to indicate if we need to remake the stiffness matrix. + struct gkyl_mat_triples **tri; // Matrix triples for building stiffness matrices. bool isdomperiodic; // =true if all directions are periodic. struct gkyl_array *rhs_cellavg; diff --git a/gyrokinetic/zero/gkyl_gk_collisionless_flux.h b/gyrokinetic/zero/gkyl_gk_collisionless_flux.h index e5717c0922..efe8da3aaa 100644 --- a/gyrokinetic/zero/gkyl_gk_collisionless_flux.h +++ b/gyrokinetic/zero/gkyl_gk_collisionless_flux.h @@ -23,6 +23,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 only_apardot Whether to only add Apardot terms to the flux. * @param gk_geom Gyrokinetic geometry object. * @param gk_dg_geom DG geometry object. * @param vel_map Velocity space mapping object. @@ -34,9 +36,9 @@ struct gkyl_gk_collisionless_flux* 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 only_apardot, 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 @@ -51,13 +53,15 @@ 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 OR should be Apardot if only_apardot is true. * @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 *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 45ac4a7559..9634cff95b 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 *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 *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. @@ -35,7 +36,10 @@ static struct { int vdim[3]; } cv_index[] = { // for use in kernel tables typedef struct { gk_collisionless_flux_surf_t kernels[3]; } gkyl_gk_collisionless_flux_surf_kern_list; +typedef struct { gkyl_gk_collisionless_flux_surf_kern_list kernels_list[4]; } gkyl_gk_collisionless_flux_surf_kern_table; + typedef struct { gk_collisionless_flux_surfvpar_t kernels[3]; } gkyl_gk_collisionless_flux_surfvpar_kern_list; +typedef struct { gkyl_gk_collisionless_flux_surfvpar_kern_list kernels_list[4]; } gkyl_gk_collisionless_flux_surfvpar_kern_table; struct gkyl_gk_collisionless_flux { struct gkyl_rect_grid phase_grid; // Phase space grid for cell spacing and cell center @@ -46,7 +50,10 @@ struct gkyl_gk_collisionless_flux { gk_collisionless_flux_surf_t flux_surf_edge_up[GKYL_MAX_CDIM]; // kernel for computing surface expansion of phase space flux. // at upper configuration space edge gk_collisionless_flux_surfvpar_t flux_surfvpar[1]; // kernel for computing surface expansion of phase space flux alpha + double charge, mass; + bool is_em; // Whether it is electromagnetic. + bool only_apardot; // Whether it is meant to only add Apardot terms. const struct gk_geometry *gk_geom; // Pointer to geometry struct. const struct gkyl_dg_geom *dg_geom; // Pointer to vol dg geometry struct. const struct gkyl_gk_dg_geom *gk_dg_geom; // Pointer to vol gk dg geometry struct. @@ -57,127 +64,282 @@ struct gkyl_gk_collisionless_flux { }; // -// Serendipity surface kernels. +// Electrostatic serendipity surface kernels. // // Gyrokinetic phase space flux alpha surface expansions in x (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_surfx_kernels[] = { - { NULL, gk_collisionless_flux_surfx_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_surfx_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_surfx_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_surfx_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_surfx_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_surfx_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_surfx_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha edge surface expansions in x (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_edge_surfx_kernels[] = { - { NULL, gk_collisionless_flux_edge_surfx_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_edge_surfx_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_edge_surfx_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_edge_surfx_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_edge_surfx_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_edge_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_edge_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_edge_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_edge_surfx_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_edge_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_edge_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_edge_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_edge_surfx_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux flux surface expansions in y (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_surfy_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, gk_collisionless_flux_surfy_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_surfy_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_surfy_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_collisionless_flux_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_surfy_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_em_collisionless_flux_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_surfy_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux flux edge surface expansions in y (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_edge_surfy_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, gk_collisionless_flux_edge_surfy_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_edge_surfy_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_edge_surfy_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_collisionless_flux_edge_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_edge_surfy_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_em_collisionless_flux_edge_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_edge_surfy_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux flux surface expansions in z (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_surfz_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, NULL, NULL }, // 2 - { NULL, gk_collisionless_flux_surfz_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_surfz_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_collisionless_flux_surfz_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_em_collisionless_flux_surfz_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux flux edge surface expansions in z (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_edge_surfz_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, NULL, NULL }, // 2 - { NULL, gk_collisionless_flux_edge_surfz_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_edge_surfz_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_collisionless_flux_edge_surfz_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_em_collisionless_flux_edge_surfz_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha surface expansions in vpar (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surfvpar_kern_list ser_gk_collisionless_flux_surfvpar_kernels[] = { - { NULL, gk_collisionless_flux_surfvpar_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_surfvpar_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_surfvpar_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_surfvpar_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surfvpar_kern_table ser_gk_collisionless_flux_surfvpar_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_surfvpar_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_surfvpar_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_surfvpar_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_surfvpar_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_surfvpar_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_surfvpar_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_surfvpar_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_surfvpar_3x2v_ser_p1, NULL }, // 3 + }, + } }; - // // Kernels used at multiblock boundaries. // // Gyrokinetic phase space flux alpha surface expansions in x (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_multib_boundary_surfx_kernels[] = { - { NULL, gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_multib_boundary_surfx_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha edge surface expansions in x (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_multib_boundary_edge_surfx_kernels[] = { - { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_multib_boundary_edge_surfx_kernels[] = { + { + .kernels_list= { + { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list= { + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux flux surface expansions in y (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_multib_boundary_surfy_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_multib_boundary_surfy_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_em_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux flux edge surface expansions in y (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_multib_boundary_edge_surfy_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_multib_boundary_edge_surfy_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux flux surface expansions in z (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_multib_boundary_surfz_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, NULL, NULL }, // 2 - { NULL, gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_multib_boundary_surfz_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_em_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux flux edge surface expansions in z (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_multib_boundary_edge_surfz_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, NULL, NULL }, // 2 - { NULL, gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_multib_boundary_edge_surfz_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1, NULL }, // 3 + }, + } }; @@ -186,147 +348,301 @@ static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux // // Gyrokinetic phase space flux alpha surface expansions in x (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_surfx_kernels[] = { - { NULL, gk_collisionless_flux_surfx_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_surfx_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_surfx_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_surfx_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_surfx_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_surfx_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_surfx_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha edge surface expansions in x (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_edge_surfx_kernels[] = { - { NULL, gk_collisionless_flux_edge_surfx_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_edge_surfx_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_edge_surfx_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_edge_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_edge_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_edge_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_edge_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha surface expansions in y (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_surfy_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_surfy_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_surfy_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_surfy_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_surfy_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_surfy_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha edge surface expansions in y (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_edge_surfy_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_edge_surfy_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha surface expansions in z (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_surfz_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, NULL, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_surfz_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_surfz_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_surfz_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_surfz_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha edge surface expansions in z (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_edge_surfz_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, NULL, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_edge_surfz_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha surface expansions in vpar (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surfvpar_kern_list ser_gk_collisionless_flux_no_by_surfvpar_kernels[] = { - { NULL, gk_collisionless_flux_surfvpar_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_surfvpar_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surfvpar_kern_table ser_gk_collisionless_flux_no_by_surfvpar_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_surfvpar_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_surfvpar_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_surfvpar_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_surfvpar_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_surfvpar_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_surfvpar_3x2v_ser_p1, NULL }, // 3 + }, + } }; - // // Kernels used at multiblock boundaries. // // Gyrokinetic phase space flux alpha surface expansions in x (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_multib_boundary_surfx_kernels[] = { - { NULL, gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_multib_boundary_surfx_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha edge surface expansions in x (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfx_kernels[] = { - { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1, NULL }, // 0 - { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfx_kernels[] = { + { + .kernels_list = { + { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha surface expansions in y (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_multib_boundary_surfy_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_multib_boundary_surfy_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha edge surface expansions in y (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfy_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfy_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha surface expansions in z (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_multib_boundary_surfz_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, NULL, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_multib_boundary_surfz_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1, NULL }, // 3 + }, + } }; // Gyrokinetic phase space flux alpha edge surface expansions in z (Serendipity kernels) GKYL_CU_D -static const gkyl_gk_collisionless_flux_surf_kern_list ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfz_kernels[] = { - { NULL, NULL, NULL }, // 0 - { NULL, NULL, NULL }, // 1 - { NULL, NULL, NULL }, // 2 - { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1, NULL }, // 3 +static const gkyl_gk_collisionless_flux_surf_kern_table ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfz_kernels[] = { + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1, NULL }, // 3 + }, + }, + { + .kernels_list = { + { NULL, NULL, NULL }, // 0 + { NULL, NULL, NULL }, // 1 + { NULL, NULL, NULL }, // 2 + { NULL, gk_em_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1, NULL }, // 3 + }, + } }; - GKYL_CU_D static gk_collisionless_flux_surf_t -choose_gk_collisionless_flux_surf_conf_kern(int dir, int cdim, int vdim, int poly_order, enum gkyl_gyrokinetic_bc_type bc) +choose_gk_collisionless_flux_surf_conf_kern(int em, int dir, int cdim, int vdim, int poly_order, enum gkyl_gyrokinetic_bc_type bc) { if (bc == GKYL_BC_GK_SKIP) { if (dir == 0) - return ser_gk_collisionless_flux_multib_boundary_surfx_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_multib_boundary_surfx_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 1) - return ser_gk_collisionless_flux_multib_boundary_surfy_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_multib_boundary_surfy_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 2) - return ser_gk_collisionless_flux_multib_boundary_surfz_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_multib_boundary_surfz_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else return NULL; } else { if (dir == 0) - return ser_gk_collisionless_flux_surfx_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_surfx_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 1) - return ser_gk_collisionless_flux_surfy_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_surfy_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 2) - return ser_gk_collisionless_flux_surfz_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_surfz_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else return NULL; } @@ -334,25 +650,25 @@ choose_gk_collisionless_flux_surf_conf_kern(int dir, int cdim, int vdim, int pol GKYL_CU_D static gk_collisionless_flux_surf_t -choose_gk_collisionless_flux_edge_surf_conf_kern(int dir, int cdim, int vdim, int poly_order, enum gkyl_gyrokinetic_bc_type bc) +choose_gk_collisionless_flux_edge_surf_conf_kern(int em, int dir, int cdim, int vdim, int poly_order, enum gkyl_gyrokinetic_bc_type bc) { if (bc == GKYL_BC_GK_SKIP) { if (dir == 0) - return ser_gk_collisionless_flux_multib_boundary_edge_surfx_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_multib_boundary_edge_surfx_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 1) - return ser_gk_collisionless_flux_multib_boundary_edge_surfy_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_multib_boundary_edge_surfy_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 2) - return ser_gk_collisionless_flux_multib_boundary_edge_surfz_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_multib_boundary_edge_surfz_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else return NULL; } else { if (dir == 0) - return ser_gk_collisionless_flux_edge_surfx_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_edge_surfx_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 1) - return ser_gk_collisionless_flux_edge_surfy_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_edge_surfy_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 2) - return ser_gk_collisionless_flux_edge_surfz_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_edge_surfz_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else return NULL; } @@ -360,32 +676,32 @@ choose_gk_collisionless_flux_edge_surf_conf_kern(int dir, int cdim, int vdim, in GKYL_CU_D static gk_collisionless_flux_surfvpar_t -choose_gk_collisionless_flux_surf_vpar_kern(int cdim, int vdim, int poly_order) +choose_gk_collisionless_flux_surf_vpar_kern(int em, int cdim, int vdim, int poly_order) { - return ser_gk_collisionless_flux_surfvpar_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_surfvpar_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; } GKYL_CU_D static gk_collisionless_flux_surf_t -choose_gk_collisionless_flux_no_by_surf_conf_kern(int dir, int cdim, int vdim, int poly_order, enum gkyl_gyrokinetic_bc_type bc) +choose_gk_collisionless_flux_no_by_surf_conf_kern(int em, int dir, int cdim, int vdim, int poly_order, enum gkyl_gyrokinetic_bc_type bc) { if (bc == GKYL_BC_GK_SKIP) { if (dir == 0) - return ser_gk_collisionless_flux_no_by_multib_boundary_surfx_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_multib_boundary_surfx_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 1) - return ser_gk_collisionless_flux_no_by_multib_boundary_surfy_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_multib_boundary_surfy_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 2) - return ser_gk_collisionless_flux_no_by_multib_boundary_surfz_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_multib_boundary_surfz_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else return NULL; } else { if (dir == 0) - return ser_gk_collisionless_flux_no_by_surfx_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_surfx_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 1) - return ser_gk_collisionless_flux_no_by_surfy_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_surfy_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 2) - return ser_gk_collisionless_flux_no_by_surfz_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_surfz_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else return NULL; } @@ -393,25 +709,25 @@ choose_gk_collisionless_flux_no_by_surf_conf_kern(int dir, int cdim, int vdim, i GKYL_CU_D static gk_collisionless_flux_surf_t -choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(int dir, int cdim, int vdim, int poly_order, enum gkyl_gyrokinetic_bc_type bc) +choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(int em, int dir, int cdim, int vdim, int poly_order, enum gkyl_gyrokinetic_bc_type bc) { if (bc == GKYL_BC_GK_SKIP) { if (dir == 0) - return ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfx_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfx_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 1) - return ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfy_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfy_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 2) - return ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfz_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_multib_boundary_edge_surfz_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else return NULL; } else { if (dir == 0) - return ser_gk_collisionless_flux_no_by_edge_surfx_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_edge_surfx_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 1) - return ser_gk_collisionless_flux_no_by_edge_surfy_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_edge_surfy_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else if (dir == 2) - return ser_gk_collisionless_flux_no_by_edge_surfz_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_no_by_edge_surfz_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; else return NULL; } @@ -419,9 +735,28 @@ choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(int dir, int cdim, int vd GKYL_CU_D static gk_collisionless_flux_surfvpar_t -choose_gk_collisionless_flux_no_by_surf_vpar_kern(int cdim, int vdim, int poly_order) +choose_gk_collisionless_flux_no_by_surf_vpar_kern(int em, int cdim, int vdim, int poly_order) +{ + return ser_gk_collisionless_flux_no_by_surfvpar_kernels[em].kernels_list[cv_index[cdim].vdim[vdim]].kernels[poly_order]; +} + + +// +// Electromagnetic serendipity surface kernels. +// Parallel electric field term. +GKYL_CU_D +static const gkyl_gk_collisionless_flux_surfvpar_kern_list ser_gk_collisionless_flux_add_apardot_surfvpar_kernels[] = { + { NULL, gk_em_collisionless_flux_add_apardot_surfvpar_1x1v_ser_p1, NULL }, // 0 + { NULL, gk_em_collisionless_flux_add_apardot_surfvpar_1x2v_ser_p1, NULL }, // 1 + { NULL, gk_em_collisionless_flux_add_apardot_surfvpar_2x2v_ser_p1, NULL }, // 2 + { NULL, gk_em_collisionless_flux_add_apardot_surfvpar_3x2v_ser_p1, NULL }, // 3 +}; + +GKYL_CU_D +static gk_collisionless_flux_surfvpar_t +choose_gk_collisionless_flux_add_apardot_surf_vpar_kern(int cdim, int vdim, int poly_order) { - return ser_gk_collisionless_flux_no_by_surfvpar_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; + return ser_gk_collisionless_flux_add_apardot_surfvpar_kernels[cv_index[cdim].vdim[vdim]].kernels[poly_order]; } #ifdef GKYL_HAVE_CUDA @@ -432,7 +767,7 @@ choose_gk_collisionless_flux_no_by_surf_vpar_kern(int cdim, int vdim, int poly_o 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, + double charge, double mass, enum gkyl_gk_collisionless_type type, const bool no_by, const bool only_apardot, 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,5 +778,5 @@ 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_array* fin, struct gkyl_array* flux_surf, struct gkyl_array* cflrate); + const struct gkyl_array *apar, const struct gkyl_array* fin, struct gkyl_array* flux_surf, struct gkyl_array* cflrate); #endif diff --git a/gyrokinetic/zero/gkyl_gk_dg_geom.h b/gyrokinetic/zero/gkyl_gk_dg_geom.h index 838b018382..41cb2d6482 100644 --- a/gyrokinetic/zero/gkyl_gk_dg_geom.h +++ b/gyrokinetic/zero/gkyl_gk_dg_geom.h @@ -22,6 +22,10 @@ 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 };