diff --git a/cmake/athena.cmake b/cmake/athena.cmake index 9bfd37b2..95af8127 100644 --- a/cmake/athena.cmake +++ b/cmake/athena.cmake @@ -11,10 +11,12 @@ set(patch_command ${CMAKE_CURRENT_SOURCE_DIR}/patches/26.scalars_flux.patch ${CMAKE_CURRENT_SOURCE_DIR}/patches/26.adiabatic_hydro.patch ${CMAKE_CURRENT_SOURCE_DIR}/patches/27.coordinates.patch - ${CMAKE_CURRENT_SOURCE_DIR}/patches/28.bvals_cc.patch ${CMAKE_CURRENT_SOURCE_DIR}/patches/29.mesh.patch ${CMAKE_CURRENT_SOURCE_DIR}/patches/30.bvals_base.patch - ${CMAKE_CURRENT_SOURCE_DIR}/patches/31.task_list.patch) + ${CMAKE_CURRENT_SOURCE_DIR}/patches/31.task_list.patch + ${CMAKE_CURRENT_SOURCE_DIR}/patches/32.scalars.patch + ${CMAKE_CURRENT_SOURCE_DIR}/patches/33.bvals_cc_cpp.patch + ${CMAKE_CURRENT_SOURCE_DIR}/patches/34.bvals_cc_hpp.patch) FetchContent_Declare( athenapp diff --git a/cmake/examples/exo2.cmake b/cmake/examples/exo2.cmake index 85f9fdc6..abf942bc 100644 --- a/cmake/examples/exo2.cmake +++ b/cmake/examples/exo2.cmake @@ -8,6 +8,7 @@ endmacro() # athena variables set_if_empty(NUMBER_GHOST_CELLS 3) +set_if_empty (NTRACER 3) # canoe configure set(CUBED_SPHERE ON) diff --git a/cmake/examples/exo3.cmake b/cmake/examples/exo3.cmake index 356c601b..2324f083 100644 --- a/cmake/examples/exo3.cmake +++ b/cmake/examples/exo3.cmake @@ -15,3 +15,5 @@ set(NETCDF ON) set(MPI ON) set(PNETCDF ON) set(RSOLVER hllc_transform) + +set (NTRACER 3) \ No newline at end of file diff --git a/examples/2023-Chen-exo3/steady_zonal.cpp b/examples/2023-Chen-exo3/steady_zonal.cpp index 8de42a91..8db6d6a6 100644 --- a/examples/2023-Chen-exo3/steady_zonal.cpp +++ b/examples/2023-Chen-exo3/steady_zonal.cpp @@ -4,6 +4,7 @@ #include #include #include +#include // application #include @@ -80,6 +81,11 @@ void MeshBlock::ProblemGenerator(ParameterInput *pin) { pexo3->GetLatLon(&lat, &lon, k, j, i); phydro->w(IDN, k, j, i) = g * h0 - (a * om_earth * u0 + u0 * u0 / 2) * sin(lat) * sin(lat); + if ((lat > PI / 2.0 * 0.9) && (lat < PI / 2.0)) + pscalars->s(2, k, j, i) = 1.0; + if ((lat > PI / 2.0 * 0.5) && (lat < PI / 2.0 * 0.6)) + pscalars->s(1, k, j, i) = 1.0; + Real U = u0 * cos(lat); Real V = 0.0; Real Vy, Vz; @@ -118,16 +124,20 @@ void MeshBlock::UserWorkBeforeOutput(ParameterInput *pin) { user_out_var(2, k, j, i) = U; user_out_var(3, k, j, i) = V; user_out_var(4, k, j, i) = delta / (C * D); + user_out_var(5, k, j, i) = pscalars->s(1, k, j, i); + user_out_var(6, k, j, i) = pscalars->s(2, k, j, i); } } void MeshBlock::InitUserMeshBlockData(ParameterInput *pin) { - AllocateUserOutputVariables(5); + AllocateUserOutputVariables(7); SetUserOutputVariableName(0, "lat"); SetUserOutputVariableName(1, "lon"); SetUserOutputVariableName(2, "U"); SetUserOutputVariableName(3, "V"); SetUserOutputVariableName(4, "sqrtg"); + SetUserOutputVariableName(5, "s1"); + SetUserOutputVariableName(6, "s2"); } void Mesh::InitUserMeshData(ParameterInput *pin) { diff --git a/patches/32.scalars.patch b/patches/32.scalars.patch new file mode 100644 index 00000000..a816b1d7 --- /dev/null +++ b/patches/32.scalars.patch @@ -0,0 +1,12 @@ +diff --git a/src/scalars/scalars.cpp b/src/scalars/scalars.cpp +index 8471fb20..2f3ad1ce 100644 +--- a/src/scalars/scalars.cpp ++++ b/src/scalars/scalars.cpp +@@ -84,6 +84,7 @@ PassiveScalars::PassiveScalars(MeshBlock *pmb, ParameterInput *pin) : + + // enroll CellCenteredBoundaryVariable object + sbvar.bvar_index = pmb->pbval->bvars.size(); ++ sbvar.TypeFlag = 1; // PassiveScalars + pmb->pbval->bvars.push_back(&sbvar); + pmb->pbval->bvars_main_int.push_back(&sbvar); + if (STS_ENABLED) { diff --git a/patches/28.bvals_cc.patch b/patches/33.bvals_cc_cpp.patch similarity index 75% rename from patches/28.bvals_cc.patch rename to patches/33.bvals_cc_cpp.patch index f56e477e..4c3a6e14 100644 --- a/patches/28.bvals_cc.patch +++ b/patches/33.bvals_cc_cpp.patch @@ -1,24 +1,24 @@ diff --git a/src/bvals/cc/bvals_cc.cpp b/src/bvals/cc/bvals_cc.cpp -index eb6f6039..d8b328b0 100644 +index 223962de..74b3ab79 100644 --- a/src/bvals/cc/bvals_cc.cpp +++ b/src/bvals/cc/bvals_cc.cpp -@@ -30,6 +30,9 @@ - #include "../../utils/buffer_utils.hpp" +@@ -31,6 +31,9 @@ #include "../bvals.hpp" #include "bvals_cc.hpp" -+ + +#include +#include - ++ // MPI header #ifdef MPI_PARALLEL -@@ -297,7 +298,12 @@ int CellCenteredBoundaryVariable::LoadBoundaryBufferSameLevel(Real *buf, + #include +@@ -297,7 +300,12 @@ int CellCenteredBoundaryVariable::LoadBoundaryBufferSameLevel(Real *buf, ek = (nb.ni.ox3 < 0) ? (pmb->ks + NGHOST - 1) : pmb->ke; int p = 0; AthenaArray &var = *var_cc; +#ifdef CUBED_SPHERE +// nl_, nu_, after buf var -+ CubedSphereUtility::PackData(var, buf, nl_, nu_, si, ei, sj, ej, sk, ek, p, nb.ni.ox1, nb.ni.ox2, nb.ni.ox3, pmb->loc); ++ CubedSphereUtility::PackData(var, buf, nl_, nu_, si, ei, sj, ej, sk, ek, p, nb.ni.ox1, nb.ni.ox2, nb.ni.ox3, pmb->loc, TypeFlag); +#else BufferUtility::PackData(var, buf, nl_, nu_, si, ei, sj, ej, sk, ek, p); +#endif diff --git a/patches/34.bvals_cc_hpp.patch b/patches/34.bvals_cc_hpp.patch new file mode 100644 index 00000000..7d728f20 --- /dev/null +++ b/patches/34.bvals_cc_hpp.patch @@ -0,0 +1,14 @@ +diff --git a/src/bvals/cc/bvals_cc.hpp b/src/bvals/cc/bvals_cc.hpp +index d167d729..ce2f8dcc 100644 +--- a/src/bvals/cc/bvals_cc.hpp ++++ b/src/bvals/cc/bvals_cc.hpp +@@ -39,6 +39,9 @@ class CellCenteredBoundaryVariable : public BoundaryVariable { + AthenaArray *var_flux, bool fflux, int flag); + ~CellCenteredBoundaryVariable(); + ++ // Type information ++ int TypeFlag = 2; // Hydro by default ++ + //! \note + //! may want to rebind var_cc to u,u1,u2,w,w1, etc. registers for time integrator logic. + //! Also, derived class HydroBoundaryVariable needs to keep switching var and coarse_var diff --git a/src/exo3/cubed_sphere_utility.cpp b/src/exo3/cubed_sphere_utility.cpp index dded9aeb..b6180877 100644 --- a/src/exo3/cubed_sphere_utility.cpp +++ b/src/exo3/cubed_sphere_utility.cpp @@ -99,7 +99,7 @@ Real CalculateInterpLocations(int loc_n, int N_blk, int k, bool GhostZone) { void InteprolateX2(const AthenaArray &src, AthenaArray &tgt, LogicalLocation const &loc, int DirInv, int TgtSide, int TgtID, int sn, int en, int si, int ei, int sj, int ej, - int sk, int ek) { + int sk, int ek, int TypeFlag) { // Interpolation along X2 (j) axis, used before sending data to X3 (k) axis // Get the local indices int lv2_lx2 = loc.lx2 >> (loc.level - 2); @@ -159,7 +159,7 @@ void InteprolateX2(const AthenaArray &src, AthenaArray &tgt, Real y1 = src_x2[src_pointer]; Real y2 = src_x2[src_pointer + 1]; Real yq = tgt_x2[j - sj]; - if (n == IVY || n == IVZ) { + if ((n == IVY || n == IVZ) && (TypeFlag == 2)) { // Projection needed, find the tgt locations first Real v1y = src(IVY, k, src_pointer - n_start - N_blk / 2 + sj, @@ -230,7 +230,7 @@ void InteprolateX2(const AthenaArray &src, AthenaArray &tgt, void InteprolateX3(const AthenaArray &src, AthenaArray &tgt, LogicalLocation const &loc, int DirInv, int TgtSide, int TgtID, int sn, int en, int si, int ei, int sj, int ej, - int sk, int ek) { + int sk, int ek, int TypeFlag) { // Interpolation along X3 (k) axis, used before sending data to ghost zone in // X2 (j) direction Get the local indices int lv2_lx2 = loc.lx2 >> (loc.level - 2); @@ -288,7 +288,7 @@ void InteprolateX3(const AthenaArray &src, AthenaArray &tgt, Real y1 = src_x3[src_pointer]; Real y2 = src_x3[src_pointer + 1]; Real yq = tgt_x3[k - sk]; - if (n == IVY || n == IVZ) { + if ((n == IVY || n == IVZ) && (TypeFlag == 2)){ // Projection needed, find the tgt locations first Real v1y = src(IVY, src_pointer - n_start - N_blk / 2 + sk, j, i); Real v1z = src(IVZ, src_pointer - n_start - N_blk / 2 + sk, j, i); @@ -377,7 +377,7 @@ void InteprolateX3(const AthenaArray &src, AthenaArray &tgt, void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, int ei, int sj, int ej, int sk, int ek, int &offset, int ox1, - int ox2, int ox3, LogicalLocation const &loc) { + int ox2, int ox3, LogicalLocation const &loc, int TypeFlag) { // Find the block ID int blockID = CubedSphere::FindBlockID(loc); @@ -419,7 +419,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == 1 && local_lx3 == bound_lim) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][3], tgside[blockID - 1][3], tgbid[blockID - 1][3], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR1(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -427,7 +427,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == 1 && local_lx2 == bound_lim) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][1], tgside[blockID - 1][1], tgbid[blockID - 1][1], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -435,7 +435,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == -1 && local_lx2 == 0) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][0], tgside[blockID - 1][0], tgbid[blockID - 1][0], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR2(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -443,7 +443,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == -1 && local_lx3 == 0) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][2], tgside[blockID - 1][2], tgbid[blockID - 1][2], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR3(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -453,7 +453,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == 1 && local_lx3 == bound_lim) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][3], tgside[blockID - 1][3], tgbid[blockID - 1][3], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -461,7 +461,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == 1 && local_lx2 == bound_lim) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][1], tgside[blockID - 1][1], tgbid[blockID - 1][1], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -469,7 +469,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == -1 && local_lx2 == 0) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][0], tgside[blockID - 1][0], tgbid[blockID - 1][0], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -477,7 +477,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == -1 && local_lx3 == 0) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][2], tgside[blockID - 1][2], tgbid[blockID - 1][2], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -487,7 +487,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == 1 && local_lx2 == bound_lim) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][1], tgside[blockID - 1][1], tgbid[blockID - 1][1], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR3(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -495,7 +495,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == -1 && local_lx2 == 0) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][0], tgside[blockID - 1][0], tgbid[blockID - 1][0], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR1(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -503,7 +503,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == 1 && local_lx3 == bound_lim) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][3], tgside[blockID - 1][3], tgbid[blockID - 1][3], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -511,7 +511,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == -1 && local_lx3 == 0) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][2], tgside[blockID - 1][2], tgbid[blockID - 1][2], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -521,7 +521,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == 1 && local_lx2 == bound_lim) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][1], tgside[blockID - 1][1], tgbid[blockID - 1][1], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR1(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -529,7 +529,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == -1 && local_lx2 == 0) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][0], tgside[blockID - 1][0], tgbid[blockID - 1][0], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR3(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -537,7 +537,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == 1 && local_lx3 == bound_lim) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][3], tgside[blockID - 1][3], tgbid[blockID - 1][3], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -545,7 +545,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == -1 && local_lx3 == 0) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][2], tgside[blockID - 1][2], tgbid[blockID - 1][2], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -555,7 +555,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == 1 && local_lx3 == bound_lim) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][3], tgside[blockID - 1][3], tgbid[blockID - 1][3], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR3(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -563,7 +563,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == 1 && local_lx2 == bound_lim) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][1], tgside[blockID - 1][1], tgbid[blockID - 1][1], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR2(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -571,7 +571,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == -1 && local_lx3 == 0) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][2], tgside[blockID - 1][2], tgbid[blockID - 1][2], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR1(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -579,7 +579,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == -1 && local_lx2 == 0) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][0], tgside[blockID - 1][0], tgbid[blockID - 1][0], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -589,7 +589,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == 1 && local_lx2 == bound_lim) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][1], tgside[blockID - 1][1], tgbid[blockID - 1][1], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR2(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -597,7 +597,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox2 == -1 && local_lx2 == 0) { InteprolateX3(src, interpolatedSrc, loc, dinv[blockID - 1][0], tgside[blockID - 1][0], tgbid[blockID - 1][0], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR2(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -605,7 +605,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == 1 && local_lx3 == bound_lim) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][3], tgside[blockID - 1][3], tgbid[blockID - 1][3], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; @@ -613,7 +613,7 @@ void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, if (ox3 == -1 && local_lx3 == 0) { InteprolateX2(src, interpolatedSrc, loc, dinv[blockID - 1][2], tgside[blockID - 1][2], tgbid[blockID - 1][2], sn, en, si, - ei, sj, ej, sk, ek); + ei, sj, ej, sk, ek, TypeFlag); PackDataR0(interpolatedSrc, buf, 0, en - sn, 0, ei - si, 0, ej - sj, 0, ek - sk, offset); return; diff --git a/src/exo3/cubed_sphere_utility.hpp b/src/exo3/cubed_sphere_utility.hpp index baf8d4a7..058f8c45 100644 --- a/src/exo3/cubed_sphere_utility.hpp +++ b/src/exo3/cubed_sphere_utility.hpp @@ -9,7 +9,7 @@ namespace CubedSphereUtility { void PackData(const AthenaArray &src, Real *buf, int sn, int en, int si, int ei, int sj, int ej, int sk, int ek, int &offset, int ox1, - int ox2, int ox3, LogicalLocation const &loc); + int ox2, int ox3, LogicalLocation const &loc, int TypeFlag); // Helper functions adapted from Paul void VecTransABPFromRLL(Real X, Real Y, int blockID, Real U, Real V, Real *V2,