Skip to content

Commit

Permalink
Change the way the CFL frequency in the gyrokinetic surface kernels i…
Browse files Browse the repository at this point in the history
…s defined, eliminating the previous formula in favor of just taking the maximum absolute value over all quad points and left/right sides of a cell. Unfortunately it seems the time step has overall dropped by a factor of 1.5 (33%) still. Will explore a little more but wanna commit kernels for now.
  • Loading branch information
manauref committed Jul 26, 2023
1 parent 767d5f6 commit 9910895
Show file tree
Hide file tree
Showing 44 changed files with 2,300 additions and 2,300 deletions.
10 changes: 5 additions & 5 deletions kernels/gyrokinetic/gyrokinetic_boundary_surfvpar_1x1v_ser_p1.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,14 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x1v_ser_p1(const double *w, con
} else {
fUpOrdR[0] = gkhyb_1x1v_p1_surfx2_eval_quad_node_0_l(fedge);
}
cflFreq += -0.625*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.7071067811865468*alphaR[1]+0.7071067811865468*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[1] = gkhyb_1x1v_p1_surfx2_eval_quad_node_1_r(fskin);
} else {
fUpOrdR[1] = gkhyb_1x1v_p1_surfx2_eval_quad_node_1_l(fedge);
}
cflFreq += -0.625*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));

// Project tensor nodal quadrature basis back onto modal basis.
double fUpR[2] = {0.};
Expand Down Expand Up @@ -99,14 +99,14 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x1v_ser_p1(const double *w, con
} else {
fUpOrdL[0] = gkhyb_1x1v_p1_surfx2_eval_quad_node_0_l(fskin);
}
cflFreq += -0.625*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.7071067811865468*alphaL[1]+0.7071067811865468*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[1] = gkhyb_1x1v_p1_surfx2_eval_quad_node_1_r(fedge);
} else {
fUpOrdL[1] = gkhyb_1x1v_p1_surfx2_eval_quad_node_1_l(fskin);
}
cflFreq += -0.625*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));

// Project tensor nodal quadrature basis back onto modal basis.
double fUpL[2] = {0.};
Expand All @@ -125,6 +125,6 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x1v_ser_p1(const double *w, con

}

return cflFreq;
return 5.0*rdvpar2*cflFreq;

}
14 changes: 7 additions & 7 deletions kernels/gyrokinetic/gyrokinetic_boundary_surfvpar_1x1v_ser_p2.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,21 +64,21 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x1v_ser_p2(const double *w, con
} else {
fUpOrdR[0] = ser_2x_p2_surfx2_eval_quad_node_0_l(fedge);
}
cflFreq += -0.625*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.7071067811865468*alphaR[0]-0.7905694150420945*alphaR[2];
if (alphaR_n > 0.) {
fUpOrdR[1] = ser_2x_p2_surfx2_eval_quad_node_1_r(fskin);
} else {
fUpOrdR[1] = ser_2x_p2_surfx2_eval_quad_node_1_l(fedge);
}
cflFreq += -0.625*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.6324555320336768*alphaR[2]+0.9486832980505135*alphaR[1]+0.7071067811865468*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[2] = ser_2x_p2_surfx2_eval_quad_node_2_r(fskin);
} else {
fUpOrdR[2] = ser_2x_p2_surfx2_eval_quad_node_2_l(fedge);
}
cflFreq += -0.625*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));

// Project tensor nodal quadrature basis back onto modal basis.
double fUpR[3] = {0.};
Expand Down Expand Up @@ -114,21 +114,21 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x1v_ser_p2(const double *w, con
} else {
fUpOrdL[0] = ser_2x_p2_surfx2_eval_quad_node_0_l(fskin);
}
cflFreq += -0.625*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.7071067811865468*alphaL[0]-0.7905694150420945*alphaL[2];
if (alphaL_n > 0.) {
fUpOrdL[1] = ser_2x_p2_surfx2_eval_quad_node_1_r(fedge);
} else {
fUpOrdL[1] = ser_2x_p2_surfx2_eval_quad_node_1_l(fskin);
}
cflFreq += -0.625*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.6324555320336768*alphaL[2]+0.9486832980505135*alphaL[1]+0.7071067811865468*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[2] = ser_2x_p2_surfx2_eval_quad_node_2_r(fedge);
} else {
fUpOrdL[2] = ser_2x_p2_surfx2_eval_quad_node_2_l(fskin);
}
cflFreq += -0.625*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));

// Project tensor nodal quadrature basis back onto modal basis.
double fUpL[3] = {0.};
Expand All @@ -150,6 +150,6 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x1v_ser_p2(const double *w, con

}

return cflFreq;
return 5.0*rdvpar2*cflFreq;

}
18 changes: 9 additions & 9 deletions kernels/gyrokinetic/gyrokinetic_boundary_surfvpar_1x2v_ser_p1.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,28 +68,28 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x2v_ser_p1(const double *w, con
} else {
fUpOrdR[0] = gkhyb_1x2v_p1_surfx2_eval_quad_node_0_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = (-0.5*alphaR[3])+0.5*alphaR[2]-0.5*alphaR[1]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[1] = gkhyb_1x2v_p1_surfx2_eval_quad_node_1_r(fskin);
} else {
fUpOrdR[1] = gkhyb_1x2v_p1_surfx2_eval_quad_node_1_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = (-0.5*alphaR[3])-0.5*alphaR[2]+0.5*alphaR[1]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[2] = gkhyb_1x2v_p1_surfx2_eval_quad_node_2_r(fskin);
} else {
fUpOrdR[2] = gkhyb_1x2v_p1_surfx2_eval_quad_node_2_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.5*alphaR[3]+0.5*alphaR[2]+0.5*alphaR[1]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[3] = gkhyb_1x2v_p1_surfx2_eval_quad_node_3_r(fskin);
} else {
fUpOrdR[3] = gkhyb_1x2v_p1_surfx2_eval_quad_node_3_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));

// Project tensor nodal quadrature basis back onto modal basis.
double fUpR[4] = {0.};
Expand Down Expand Up @@ -131,28 +131,28 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x2v_ser_p1(const double *w, con
} else {
fUpOrdL[0] = gkhyb_1x2v_p1_surfx2_eval_quad_node_0_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = (-0.5*alphaL[3])+0.5*alphaL[2]-0.5*alphaL[1]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[1] = gkhyb_1x2v_p1_surfx2_eval_quad_node_1_r(fedge);
} else {
fUpOrdL[1] = gkhyb_1x2v_p1_surfx2_eval_quad_node_1_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = (-0.5*alphaL[3])-0.5*alphaL[2]+0.5*alphaL[1]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[2] = gkhyb_1x2v_p1_surfx2_eval_quad_node_2_r(fedge);
} else {
fUpOrdL[2] = gkhyb_1x2v_p1_surfx2_eval_quad_node_2_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.5*alphaL[3]+0.5*alphaL[2]+0.5*alphaL[1]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[3] = gkhyb_1x2v_p1_surfx2_eval_quad_node_3_r(fedge);
} else {
fUpOrdL[3] = gkhyb_1x2v_p1_surfx2_eval_quad_node_3_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));

// Project tensor nodal quadrature basis back onto modal basis.
double fUpL[4] = {0.};
Expand All @@ -179,6 +179,6 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x2v_ser_p1(const double *w, con

}

return cflFreq;
return 5.0*rdvpar2*cflFreq;

}
38 changes: 19 additions & 19 deletions kernels/gyrokinetic/gyrokinetic_boundary_surfvpar_1x2v_ser_p2.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,63 +74,63 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x2v_ser_p2(const double *w, con
} else {
fUpOrdR[0] = ser_3x_p2_surfx2_eval_quad_node_0_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.4472135954999572*alphaR[4]-0.6708203932499357*alphaR[1]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[1] = ser_3x_p2_surfx2_eval_quad_node_1_r(fskin);
} else {
fUpOrdR[1] = ser_3x_p2_surfx2_eval_quad_node_1_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.6*alphaR[6]+0.4472135954999572*alphaR[4]-0.9*alphaR[3]+0.6708203932499357*alphaR[2]-0.6708203932499357*alphaR[1]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[2] = ser_3x_p2_surfx2_eval_quad_node_2_r(fskin);
} else {
fUpOrdR[2] = ser_3x_p2_surfx2_eval_quad_node_2_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.75*alphaR[6]-0.5590169943749465*alphaR[4]-0.6708203932499357*alphaR[2]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[3] = ser_3x_p2_surfx2_eval_quad_node_3_r(fskin);
} else {
fUpOrdR[3] = ser_3x_p2_surfx2_eval_quad_node_3_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.5*alphaR[0]-0.5590169943749465*alphaR[4];
if (alphaR_n > 0.) {
fUpOrdR[4] = ser_3x_p2_surfx2_eval_quad_node_4_r(fskin);
} else {
fUpOrdR[4] = ser_3x_p2_surfx2_eval_quad_node_4_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = (-0.75*alphaR[6])-0.5590169943749465*alphaR[4]+0.6708203932499357*alphaR[2]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[5] = ser_3x_p2_surfx2_eval_quad_node_5_r(fskin);
} else {
fUpOrdR[5] = ser_3x_p2_surfx2_eval_quad_node_5_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = (-0.6*alphaR[6])+0.4472135954999572*alphaR[4]-0.9*alphaR[3]-0.6708203932499357*alphaR[2]+0.6708203932499357*alphaR[1]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[6] = ser_3x_p2_surfx2_eval_quad_node_6_r(fskin);
} else {
fUpOrdR[6] = ser_3x_p2_surfx2_eval_quad_node_6_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.4472135954999572*alphaR[4]+0.6708203932499357*alphaR[1]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[7] = ser_3x_p2_surfx2_eval_quad_node_7_r(fskin);
} else {
fUpOrdR[7] = ser_3x_p2_surfx2_eval_quad_node_7_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));
alphaR_n = 0.6*alphaR[6]+0.4472135954999572*alphaR[4]+0.9*alphaR[3]+0.6708203932499357*alphaR[2]+0.6708203932499357*alphaR[1]+0.5*alphaR[0];
if (alphaR_n > 0.) {
fUpOrdR[8] = ser_3x_p2_surfx2_eval_quad_node_8_r(fskin);
} else {
fUpOrdR[8] = ser_3x_p2_surfx2_eval_quad_node_8_l(fedge);
}
cflFreq += -0.3125*rdvpar2*(alphaR_n-fabs(alphaR_n));
cflFreq = fmax(cflFreq, fabs(alphaR_n));

// Project tensor nodal quadrature basis back onto modal basis.
double fUpR[8] = {0.};
Expand Down Expand Up @@ -186,63 +186,63 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x2v_ser_p2(const double *w, con
} else {
fUpOrdL[0] = ser_3x_p2_surfx2_eval_quad_node_0_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.4472135954999572*alphaL[4]-0.6708203932499357*alphaL[1]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[1] = ser_3x_p2_surfx2_eval_quad_node_1_r(fedge);
} else {
fUpOrdL[1] = ser_3x_p2_surfx2_eval_quad_node_1_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.6*alphaL[6]+0.4472135954999572*alphaL[4]-0.9*alphaL[3]+0.6708203932499357*alphaL[2]-0.6708203932499357*alphaL[1]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[2] = ser_3x_p2_surfx2_eval_quad_node_2_r(fedge);
} else {
fUpOrdL[2] = ser_3x_p2_surfx2_eval_quad_node_2_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.75*alphaL[6]-0.5590169943749465*alphaL[4]-0.6708203932499357*alphaL[2]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[3] = ser_3x_p2_surfx2_eval_quad_node_3_r(fedge);
} else {
fUpOrdL[3] = ser_3x_p2_surfx2_eval_quad_node_3_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.5*alphaL[0]-0.5590169943749465*alphaL[4];
if (alphaL_n > 0.) {
fUpOrdL[4] = ser_3x_p2_surfx2_eval_quad_node_4_r(fedge);
} else {
fUpOrdL[4] = ser_3x_p2_surfx2_eval_quad_node_4_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = (-0.75*alphaL[6])-0.5590169943749465*alphaL[4]+0.6708203932499357*alphaL[2]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[5] = ser_3x_p2_surfx2_eval_quad_node_5_r(fedge);
} else {
fUpOrdL[5] = ser_3x_p2_surfx2_eval_quad_node_5_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = (-0.6*alphaL[6])+0.4472135954999572*alphaL[4]-0.9*alphaL[3]-0.6708203932499357*alphaL[2]+0.6708203932499357*alphaL[1]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[6] = ser_3x_p2_surfx2_eval_quad_node_6_r(fedge);
} else {
fUpOrdL[6] = ser_3x_p2_surfx2_eval_quad_node_6_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.4472135954999572*alphaL[4]+0.6708203932499357*alphaL[1]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[7] = ser_3x_p2_surfx2_eval_quad_node_7_r(fedge);
} else {
fUpOrdL[7] = ser_3x_p2_surfx2_eval_quad_node_7_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));
alphaL_n = 0.6*alphaL[6]+0.4472135954999572*alphaL[4]+0.9*alphaL[3]+0.6708203932499357*alphaL[2]+0.6708203932499357*alphaL[1]+0.5*alphaL[0];
if (alphaL_n > 0.) {
fUpOrdL[8] = ser_3x_p2_surfx2_eval_quad_node_8_r(fedge);
} else {
fUpOrdL[8] = ser_3x_p2_surfx2_eval_quad_node_8_l(fskin);
}
cflFreq += -0.3125*rdvpar2*(alphaL_n-fabs(alphaL_n));
cflFreq = fmax(cflFreq, fabs(alphaL_n));

// Project tensor nodal quadrature basis back onto modal basis.
double fUpL[8] = {0.};
Expand Down Expand Up @@ -281,6 +281,6 @@ GKYL_CU_DH double gyrokinetic_boundary_surfvpar_1x2v_ser_p2(const double *w, con

}

return cflFreq;
return 5.0*rdvpar2*cflFreq;

}
Loading

0 comments on commit 9910895

Please sign in to comment.