Skip to content

Commit

Permalink
Z4cow: use DECLARE_CCTK_ARGUMENTSX
Browse files Browse the repository at this point in the history
  • Loading branch information
lwJi committed Sep 11, 2024
1 parent 51b76eb commit 4ca6dbb
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 235 deletions.
51 changes: 14 additions & 37 deletions Z4cow/src/adm.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -23,56 +23,33 @@ CCTK_DEVICE CCTK_HOST CCTK_ATTRIBUTE_ALWAYS_INLINE inline T Power(T x, int y) {
}

extern "C" void Z4cow_ADM(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_Z4cow_ADM;
DECLARE_CCTK_ARGUMENTSX_Z4cow_ADM;
DECLARE_CCTK_PARAMETERS;

const array<int, dim> indextype = {0, 0, 0};
const GF3D2layout layout2(cctkGH, indextype);

// Input Z4c grid functions
const GF3D2<const CCTK_REAL> gf_W(layout2, W);
const smat<GF3D2<const CCTK_REAL>, 3> gf_gamt{
GF3D2<const CCTK_REAL>(layout2, gammatxx),
GF3D2<const CCTK_REAL>(layout2, gammatxy),
GF3D2<const CCTK_REAL>(layout2, gammatxz),
GF3D2<const CCTK_REAL>(layout2, gammatyy),
GF3D2<const CCTK_REAL>(layout2, gammatyz),
GF3D2<const CCTK_REAL>(layout2, gammatzz)};
const GF3D2<const CCTK_REAL> gf_exKh(layout2, Kh);
const smat<GF3D2<const CCTK_REAL>, 3> gf_exAt{
GF3D2<const CCTK_REAL>(layout2, Atxx),
GF3D2<const CCTK_REAL>(layout2, Atxy),
GF3D2<const CCTK_REAL>(layout2, Atxz),
GF3D2<const CCTK_REAL>(layout2, Atyy),
GF3D2<const CCTK_REAL>(layout2, Atyz),
GF3D2<const CCTK_REAL>(layout2, Atzz)};
const GF3D2<const CCTK_REAL> gf_Theta(layout2, Theta);
const GF3D2<const CCTK_REAL> gf_alpha(layout2, alphaG);
const vec<GF3D2<const CCTK_REAL>, 3> gf_beta{
GF3D2<const CCTK_REAL>(layout2, betaGx),
GF3D2<const CCTK_REAL>(layout2, betaGy),
GF3D2<const CCTK_REAL>(layout2, betaGz)};
const GF3D2<const CCTK_REAL> &gf_W = W;
const smat<GF3D2<const CCTK_REAL>, 3> gf_gamt{gammatxx, gammatxy, gammatxz,
gammatyy, gammatyz, gammatzz};
const GF3D2<const CCTK_REAL> &gf_exKh = Kh;
const smat<GF3D2<const CCTK_REAL>, 3> gf_exAt{Atxx, Atxy, Atxz,
Atyy, Atyz, Atzz};
const GF3D2<const CCTK_REAL> &gf_Theta = Theta;
const GF3D2<const CCTK_REAL> &gf_alpha = alphaG;
const vec<GF3D2<const CCTK_REAL>, 3> gf_beta{betaGx, betaGy, betaGz};

// Output ADM grid functions
const smat<GF3D2<CCTK_REAL>, 3> gf_ADMgam{
GF3D2<CCTK_REAL>(layout2, gxx), GF3D2<CCTK_REAL>(layout2, gxy),
GF3D2<CCTK_REAL>(layout2, gxz), GF3D2<CCTK_REAL>(layout2, gyy),
GF3D2<CCTK_REAL>(layout2, gyz), GF3D2<CCTK_REAL>(layout2, gzz)};
const smat<GF3D2<CCTK_REAL>, 3> gf_ADMK{
GF3D2<CCTK_REAL>(layout2, kxx), GF3D2<CCTK_REAL>(layout2, kxy),
GF3D2<CCTK_REAL>(layout2, kxz), GF3D2<CCTK_REAL>(layout2, kyy),
GF3D2<CCTK_REAL>(layout2, kyz), GF3D2<CCTK_REAL>(layout2, kzz)};
const GF3D2<CCTK_REAL> gf_ADMalpha(layout2, alp);
const vec<GF3D2<CCTK_REAL>, 3> gf_ADMbeta{GF3D2<CCTK_REAL>(layout2, betax),
GF3D2<CCTK_REAL>(layout2, betay),
GF3D2<CCTK_REAL>(layout2, betaz)};
const smat<GF3D2<CCTK_REAL>, 3> gf_ADMgam{gxx, gxy, gxz, gyy, gyz, gzz};
const smat<GF3D2<CCTK_REAL>, 3> gf_ADMK{kxx, kxy, kxz, kyy, kyz, kzz};
const GF3D2<CCTK_REAL> &gf_ADMalpha = alp;
const vec<GF3D2<CCTK_REAL>, 3> gf_ADMbeta{betax, betay, betaz};

typedef simd<CCTK_REAL> vreal;
typedef simdl<CCTK_REAL> vbool;
constexpr size_t vsize = tuple_size_v<vreal>;

const Loop::GridDescBaseDevice grid(cctkGH);

#ifdef __CUDACC__
const nvtxRangeId_t range = nvtxRangeStartA("Z4cow_ADM::adm");
#endif
Expand Down
85 changes: 28 additions & 57 deletions Z4cow/src/constraint.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,19 @@ CCTK_DEVICE CCTK_HOST CCTK_ATTRIBUTE_ALWAYS_INLINE inline T Power(T x, int y) {
}

extern "C" void Z4cow_Constraints(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_Z4cow_Constraints;
DECLARE_CCTK_ARGUMENTSX_Z4cow_Constraints;
DECLARE_CCTK_PARAMETERS;

for (int d = 0; d < 3; ++d)
if (cctk_nghostzones[d] < deriv_order / 2)
CCTK_VERROR("Need at least %d ghost zones", deriv_order / 2);

const vect<CCTK_REAL, dim> dx{
CCTK_DELTA_SPACE(0),
CCTK_DELTA_SPACE(1),
CCTK_DELTA_SPACE(2),
};

const array<int, dim> indextype = {0, 0, 0};
const array<int, dim> nghostzones = {cctk_nghostzones[0], cctk_nghostzones[1],
cctk_nghostzones[2]};
Expand All @@ -47,41 +53,29 @@ extern "C" void Z4cow_Constraints(CCTK_ARGUMENTS) {
const GF3D5layout layout5(imin, imax);

// Input grid functions
const GF3D2<const CCTK_REAL> gf_W(layout2, W);
const smat<GF3D2<const CCTK_REAL>, 3> gf_gamt{
GF3D2<const CCTK_REAL>(layout2, gammatxx),
GF3D2<const CCTK_REAL>(layout2, gammatxy),
GF3D2<const CCTK_REAL>(layout2, gammatxz),
GF3D2<const CCTK_REAL>(layout2, gammatyy),
GF3D2<const CCTK_REAL>(layout2, gammatyz),
GF3D2<const CCTK_REAL>(layout2, gammatzz)};
const GF3D2<const CCTK_REAL> gf_exKh(layout2, Kh);
const smat<GF3D2<const CCTK_REAL>, 3> gf_exAt{
GF3D2<const CCTK_REAL>(layout2, Atxx),
GF3D2<const CCTK_REAL>(layout2, Atxy),
GF3D2<const CCTK_REAL>(layout2, Atxz),
GF3D2<const CCTK_REAL>(layout2, Atyy),
GF3D2<const CCTK_REAL>(layout2, Atyz),
GF3D2<const CCTK_REAL>(layout2, Atzz)};
const vec<GF3D2<const CCTK_REAL>, 3> gf_trGt{
GF3D2<const CCTK_REAL>(layout2, Gamtx),
GF3D2<const CCTK_REAL>(layout2, Gamty),
GF3D2<const CCTK_REAL>(layout2, Gamtz)};
const GF3D2<const CCTK_REAL> gf_Theta(layout2, Theta);
const GF3D2<const CCTK_REAL> gf_alpha(layout2, alphaG);
const vec<GF3D2<const CCTK_REAL>, 3> gf_beta{
GF3D2<const CCTK_REAL>(layout2, betaGx),
GF3D2<const CCTK_REAL>(layout2, betaGy),
GF3D2<const CCTK_REAL>(layout2, betaGz)};
const GF3D2<const CCTK_REAL> &gf_W = W;
const smat<GF3D2<const CCTK_REAL>, 3> gf_gamt{gammatxx, gammatxy, gammatxz,
gammatyy, gammatyz, gammatzz};
const GF3D2<const CCTK_REAL> &gf_exKh = Kh;
const smat<GF3D2<const CCTK_REAL>, 3> gf_exAt{Atxx, Atxy, Atxz,
Atyy, Atyz, Atzz};
const vec<GF3D2<const CCTK_REAL>, 3> gf_trGt{Gamtx, Gamty, Gamtz};
const GF3D2<const CCTK_REAL> &gf_Theta = Theta;
const GF3D2<const CCTK_REAL> &gf_alpha = alphaG;
const vec<GF3D2<const CCTK_REAL>, 3> gf_beta{betaGx, betaGy, betaGz};

// Define derivs lambdas
const Loop::GridDescBaseDevice grid(cctkGH);
const vect<CCTK_REAL, dim> dx(std::array<CCTK_REAL, dim>{
CCTK_DELTA_SPACE(0),
CCTK_DELTA_SPACE(1),
CCTK_DELTA_SPACE(2),
});
// More input grid functions
const GF3D2<const CCTK_REAL> &gf_eTtt = eTtt;
const vec<GF3D2<const CCTK_REAL>, 3> gf_eTt{eTtx, eTty, eTtz};
const smat<GF3D2<const CCTK_REAL>, 3> gf_eT{eTxx, eTxy, eTxz,
eTyy, eTyz, eTzz};

// Output grid functions
const vec<GF3D2<CCTK_REAL>, 3> gf_ZtC{ZtCx, ZtCy, ZtCz};
const GF3D2<CCTK_REAL> &gf_HC = HC;
const vec<GF3D2<CCTK_REAL>, 3> gf_MtC{MtCx, MtCy, MtCz};

// Define derivs lambdas
const auto calccopy = [&](const auto &gf, const auto &gf0) {
Derivs::calc_copy<0, 0, 0>(gf, layout5, grid, gf0);
};
Expand Down Expand Up @@ -150,29 +144,6 @@ extern "C" void Z4cow_Constraints(CCTK_ARGUMENTS) {
itmp);
itmp = -1;

// More input grid functions
const GF3D2<const CCTK_REAL> gf_eTtt(layout2, eTtt);
const vec<GF3D2<const CCTK_REAL>, 3> gf_eTt{
GF3D2<const CCTK_REAL>(layout2, eTtx),
GF3D2<const CCTK_REAL>(layout2, eTty),
GF3D2<const CCTK_REAL>(layout2, eTtz)};
const smat<GF3D2<const CCTK_REAL>, 3> gf_eT{
GF3D2<const CCTK_REAL>(layout2, eTxx),
GF3D2<const CCTK_REAL>(layout2, eTxy),
GF3D2<const CCTK_REAL>(layout2, eTxz),
GF3D2<const CCTK_REAL>(layout2, eTyy),
GF3D2<const CCTK_REAL>(layout2, eTyz),
GF3D2<const CCTK_REAL>(layout2, eTzz)};

// Output grid functions
const vec<GF3D2<CCTK_REAL>, 3> gf_ZtC{GF3D2<CCTK_REAL>(layout2, ZtCx),
GF3D2<CCTK_REAL>(layout2, ZtCy),
GF3D2<CCTK_REAL>(layout2, ZtCz)};
const GF3D2<CCTK_REAL> gf_HC(layout2, HC);
const vec<GF3D2<CCTK_REAL>, 3> gf_MtC{GF3D2<CCTK_REAL>(layout2, MtCx),
GF3D2<CCTK_REAL>(layout2, MtCy),
GF3D2<CCTK_REAL>(layout2, MtCz)};

// simd types
typedef simd<CCTK_REAL> vreal;
typedef simdl<CCTK_REAL> vbool;
Expand Down
9 changes: 3 additions & 6 deletions Z4cow/src/enforce.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,9 @@ extern "C" void Z4cow_Enforce(CCTK_ARGUMENTS) {

const GF3D2<CCTK_REAL> &gf_W = W;
const GF3D2<CCTK_REAL> &gf_alphaG = alphaG;
const smat<GF3D2<CCTK_REAL>, 3> gf_gammat{
gammatxx, gammatxy, gammatxz, gammatyy, gammatyz, gammatzz,
};
const smat<GF3D2<CCTK_REAL>, 3> gf_At{
Atxx, Atxy, Atxz, Atyy, Atyz, Atzz,
};
const smat<GF3D2<CCTK_REAL>, 3> gf_gammat{gammatxx, gammatxy, gammatxz,
gammatyy, gammatyz, gammatzz};
const smat<GF3D2<CCTK_REAL>, 3> gf_At{Atxx, Atxy, Atxz, Atyy, Atyz, Atzz};

typedef simd<CCTK_REAL> vreal;
typedef simdl<CCTK_REAL> vbool;
Expand Down
49 changes: 13 additions & 36 deletions Z4cow/src/initial1.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -17,54 +17,31 @@ using namespace Arith;
using namespace Loop;

extern "C" void Z4cow_Initial1(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_Z4cow_Initial1;
DECLARE_CCTK_ARGUMENTSX_Z4cow_Initial1;

const array<int, dim> indextype = {0, 0, 0};
const GF3D2layout layout1(cctkGH, indextype);

// Input grid functions
const smat<GF3D2<const CCTK_REAL>, 3> gf_g1{
GF3D2<const CCTK_REAL>(layout1, gxx),
GF3D2<const CCTK_REAL>(layout1, gxy),
GF3D2<const CCTK_REAL>(layout1, gxz),
GF3D2<const CCTK_REAL>(layout1, gyy),
GF3D2<const CCTK_REAL>(layout1, gyz),
GF3D2<const CCTK_REAL>(layout1, gzz)};
const smat<GF3D2<const CCTK_REAL>, 3> gf_K1{
GF3D2<const CCTK_REAL>(layout1, kxx),
GF3D2<const CCTK_REAL>(layout1, kxy),
GF3D2<const CCTK_REAL>(layout1, kxz),
GF3D2<const CCTK_REAL>(layout1, kyy),
GF3D2<const CCTK_REAL>(layout1, kyz),
GF3D2<const CCTK_REAL>(layout1, kzz)};
const GF3D2<const CCTK_REAL> gf_alp1(layout1, alp);
const vec<GF3D2<const CCTK_REAL>, 3> gf_beta1{
GF3D2<const CCTK_REAL>(layout1, betax),
GF3D2<const CCTK_REAL>(layout1, betay),
GF3D2<const CCTK_REAL>(layout1, betaz)};
const smat<GF3D2<const CCTK_REAL>, 3> gf_g1{gxx, gxy, gxz, gyy, gyz, gzz};
const smat<GF3D2<const CCTK_REAL>, 3> gf_K1{kxx, kxy, kxz, kyy, kyz, kzz};
const GF3D2<const CCTK_REAL> &gf_alp1 = alp;
const vec<GF3D2<const CCTK_REAL>, 3> gf_beta1{betax, betay, betaz};

// Output grid functions
const GF3D2<CCTK_REAL> gf_W1(layout1, W);
const smat<GF3D2<CCTK_REAL>, 3> gf_gammat1{
GF3D2<CCTK_REAL>(layout1, gammatxx), GF3D2<CCTK_REAL>(layout1, gammatxy),
GF3D2<CCTK_REAL>(layout1, gammatxz), GF3D2<CCTK_REAL>(layout1, gammatyy),
GF3D2<CCTK_REAL>(layout1, gammatyz), GF3D2<CCTK_REAL>(layout1, gammatzz)};
const GF3D2<CCTK_REAL> gf_Kh1(layout1, Kh);
const smat<GF3D2<CCTK_REAL>, 3> gf_At1{
GF3D2<CCTK_REAL>(layout1, Atxx), GF3D2<CCTK_REAL>(layout1, Atxy),
GF3D2<CCTK_REAL>(layout1, Atxz), GF3D2<CCTK_REAL>(layout1, Atyy),
GF3D2<CCTK_REAL>(layout1, Atyz), GF3D2<CCTK_REAL>(layout1, Atzz)};
const GF3D2<CCTK_REAL> gf_Theta1(layout1, Theta);
const GF3D2<CCTK_REAL> gf_alphaG1(layout1, alphaG);
const vec<GF3D2<CCTK_REAL>, 3> gf_betaG1{GF3D2<CCTK_REAL>(layout1, betaGx),
GF3D2<CCTK_REAL>(layout1, betaGy),
GF3D2<CCTK_REAL>(layout1, betaGz)};
const GF3D2<CCTK_REAL> &gf_W1 = W;
const smat<GF3D2<CCTK_REAL>, 3> gf_gammat1{gammatxx, gammatxy, gammatxz,
gammatyy, gammatyz, gammatzz};
const GF3D2<CCTK_REAL> &gf_Kh1 = Kh;
const smat<GF3D2<CCTK_REAL>, 3> gf_At1{Atxx, Atxy, Atxz, Atyy, Atyz, Atzz};
const GF3D2<CCTK_REAL> &gf_Theta1 = Theta;
const GF3D2<CCTK_REAL> &gf_alphaG1 = alphaG;
const vec<GF3D2<CCTK_REAL>, 3> gf_betaG1{betaGx, betaGy, betaGz};

typedef simd<CCTK_REAL> vreal;
typedef simdl<CCTK_REAL> vbool;
constexpr size_t vsize = tuple_size_v<vreal>;

const Loop::GridDescBaseDevice grid(cctkGH);
#ifdef __CUDACC__
const nvtxRangeId_t range = nvtxRangeStartA("Z4cow_Initial1::initial1");
#endif
Expand Down
44 changes: 18 additions & 26 deletions Z4cow/src/initial2.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ calc_gamma(const smat<T, D> &gu, const vec<smat<T, D>, D> &Gammal) {
}

extern "C" void Z4cow_Initial2(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_Z4cow_Initial2;
DECLARE_CCTK_ARGUMENTSX_Z4cow_Initial2;
DECLARE_CCTK_PARAMETERS;

const vect<CCTK_REAL, 3> dx{
Expand All @@ -46,10 +46,24 @@ extern "C" void Z4cow_Initial2(CCTK_ARGUMENTS) {
CCTK_DELTA_SPACE(2),
};

const array<int, dim> indextype = {0, 0, 0};
const GF3D2layout layout1(cctkGH, indextype);

// Input grid functions
const smat<GF3D2<const CCTK_REAL>, 3> gf_gammat1{
gammatxx, gammatxy, gammatxz, gammatyy, gammatyz, gammatzz};

// Output grid functions
const vec<GF3D2<CCTK_REAL>, 3> gf_Gamt1{Gamtx, Gamty, Gamtz};

typedef simd<CCTK_REAL> vreal;
typedef simdl<CCTK_REAL> vbool;
constexpr size_t vsize = tuple_size_v<vreal>;

// Define derivs function
vec<simd<CCTK_REAL>, dim> (*calc_deriv)(
const GF3D2<const CCTK_REAL> &, const simdl<CCTK_REAL> &,
const vect<int, dim> &, const vect<CCTK_REAL, dim> &);
vec<vreal, dim> (*calc_deriv)(const GF3D2<const CCTK_REAL> &, const vbool &,
const vect<int, dim> &,
const vect<CCTK_REAL, dim> &);
switch (deriv_order) {
case 2:
calc_deriv = &Derivs::calc_deriv<2>;
Expand All @@ -67,28 +81,6 @@ extern "C" void Z4cow_Initial2(CCTK_ARGUMENTS) {
assert(0);
}

const array<int, dim> indextype = {0, 0, 0};
const GF3D2layout layout1(cctkGH, indextype);

// Input grid functions
const smat<GF3D2<const CCTK_REAL>, 3> gf_gammat1{
GF3D2<const CCTK_REAL>(layout1, gammatxx),
GF3D2<const CCTK_REAL>(layout1, gammatxy),
GF3D2<const CCTK_REAL>(layout1, gammatxz),
GF3D2<const CCTK_REAL>(layout1, gammatyy),
GF3D2<const CCTK_REAL>(layout1, gammatyz),
GF3D2<const CCTK_REAL>(layout1, gammatzz)};

// Output grid functions
const vec<GF3D2<CCTK_REAL>, 3> gf_Gamt1{GF3D2<CCTK_REAL>(layout1, Gamtx),
GF3D2<CCTK_REAL>(layout1, Gamty),
GF3D2<CCTK_REAL>(layout1, Gamtz)};

typedef simd<CCTK_REAL> vreal;
typedef simdl<CCTK_REAL> vbool;
constexpr size_t vsize = tuple_size_v<vreal>;

const Loop::GridDescBaseDevice grid(cctkGH);
#ifdef __CUDACC__
const nvtxRangeId_t range = nvtxRangeStartA("Z4cow_Initial2::initial2");
#endif
Expand Down
Loading

0 comments on commit 4ca6dbb

Please sign in to comment.