GKKJ75HX2ERLVBZVE2CUB6T3J2SUT7R3UKEKTEYNOG43ZKX6X5MQC
4YEITIZWMO2BGSPSNR2XMDAZPPSRHTLHBNZ7KUN7KE37LOSUUW2AC
JUGWBCFMHWBYSJZSPDF7S3KTXCNT5PRBAHTBTMVSGSPFBNIOP37AC
3WWWPWVBCW32VGLULWLPZTTBGVTPQVJJT25ZE2VRZZMQB5YD4KWQC
IUOMKBDRBJNMDE7ZO2XXIGWD7GLQVAJI4I37K5IONSQVNV4HTF2QC
6RX5CW4XFL4SJVSVJIM4EWT5RQJS6FWAWLXU7PRT5ZDFYK4QRGZQC
BJDGFYBMECTJG7BHLNHLSCUCBVYHAY6OGY37FIJP6JDGNDXQNQVAC
CWJH5G6QYZQWEZNSL6PGAMA6XAZHMXLNQCMKQ4HLUDVYKEERN2WAC
M5R6KQLXLGYSVKHVAX5AJKD6NYE6IM5Z6WVTR3BTKPJDNNKF3ARAC
USTERO3AEVALHM74N4357AK3M3XMPYX524E3BHG4NCRMKL3L3DSAC
NKZ62JLSJQ7WH6ERIPBWSU63CAP4H3GHYCUL6JKQELBY7V33HGOAC
JYHNXXG3OJTYBJ2U3WMKUS6N5WHXO773WXVRNSJLBC5FGEYLJP2AC
BEVN3UJ3EJJNK52M2VAT33FV5RWW6IPNGDLPA6TNKLGJ5OCKJ76AC
722HZ7UFINNE3YKSYKP2NHZ5XEG5QQLQHSKC7PREJZR3EX6RDYUAC
4UAVM7QNVW2KOPZCOWOCKMBIPDNDDIUOLNO5EFIWWHKKJ53ALSDAC
FEMASUBNU32NSG4DNXZX54CGCA57PVRGYO46L3A6F2EJ4BCSJ3SAC
7Y37CMWGUQY3IOMFZW46UINY2W5DIEE3TXGN7RDKYZO6FHCLHDBQC
33IC3UHCEPZLGS5ACS2JXHGT6CRU5LXU6PM6RDHCERPOIELVRVXQC
5IAXY3XZJTRMMVT2OVIJ6OXQJI6OJPTPCHHA4IVLVMHANCCC5NKAC
M6DALF7V7J377IXGE5ABJRJ25PMBDOBGQX5ZXTQZHTGOHQSUSZKAC
ULG227G2VMOOSDSKHY36QQQGEABGXZIX2B3JA4YIBS6HCVDVJ7IAC
2DKSL6DKZAIYQUJGDULORCKU5K4Z5Z3W4RIKQYDSLKMCNQNDZFBAC
6JG4USUIDVMK7A4VPF5DA3VMYFALQXDRRUDF7FJQ5FZ3VCGGINIQC
UUGQGVC4WEKN64WAP7F5QPS2UHGQB5ZLMFRIYNWKMIEBDO3QRX4AC
ORAAQXS3UNKXYDJBCTHNEIDJIZDHWMM5EVCZKVMFRKQK2NIQNJGAC
NGD6QWRDHWBMQXL2YXZVF3BFQALSII3LH6BMIOFL7VFMGPLHCZEQC
ULVYXPG2IOJ724MTFVKJLQMPMVL5VAJUOFH7BIXPXVJ2SUGOFRFAC
GSGI6HIWST43XFEORCMKH6VPEGXHEZG5EK4JUUNWP3XFYUKGNA3AC
E3MBKFT4GEFDAGZQQW4OROY5F6FWC46G6MRH54GDYTGO7O5YSRIAC
AW3GEKCXENPOTX6J57FBCK3IOKNGROONVUI52AGVDKFB7GASXWMAC
YIQN7NJTGEVKW7JZHL6CTH6EPCIXCNBYNURIGXPYZAOUX3VAJQMAC
MSBBCXVGD3GRLE5KAI6BKAFRV7SQUWI2SNN43AJAUD3ISRCEXY6QC
RTNZAS3UPI6GG3KY4Z5WVXJ4R2YF5427BB6WAV3GHRS5W7XPOSUQC
BPRNUTY7MHK7LK4EY5MY5OFFG3ABOL7LWXD574L35M74YSQPULFAC
V6A2UBM4TJJ34KDEKXSR2C5NSDL53P6AHPEARIU5RMPAWFS35PTQC
TVBD244E7Q7WV44CRBTFST535NUP3JAZH6OLL4IKDR3OWEXSU7HAC
PQB3EKQ6MBCXPTW4HB7SGMSTOTYMB3EFZX2573OFCQI6PSOEKCSQC
BVR7DVINVPQG7PA6Z7QYVYNQ43YZL7XCC6AOMSMWMGAAB2Q43STAC
U77PE56ICORZNQW33NXGSEMW7GDHCSSZ4EXB6OHBJSHEG6WHYSSQC
IVHURSHY4636OGIF3PNDO5CWOVRLJ75M4LP65J6I2E6KAM4QKF4AC
UZAKARMGORRQG733ZUPJOEGL5FG243I32NCC2SRSFDCZKUQ5A52QC
VAF66DTVLDWNG7N2PEQYEH4OH5SPSMFBXKPR2PU67IIM6CVPCJ7AC
RCLGQ2LZMFVPBPTU2G55DJ6HZPOGGTPZRZCY54VGP6YLHANJ2LAQC
DGEGTDYVGRHEGNFDHCCVTD6AVLRJ2XHDXQPWR5MMR62V5NU2XGIQC
DQZRKU4B6C3WWWXFMBBSVKYD5AXDGUMHHPACVWKERGKB5WLHZGYAC
5XGIB7XMEZNBLA5ZLQTXRTC3AZ5CTRGMXWBPVMWXG4DPHKWDF4ZAC
TOBGHRPKEPSXDN56WGSZNWOMCBVJ4KUSLWYWI56MC2RR3MM3KLZAC
WSU4HII7H3ZB4AKK2I3KF4ENG3M4N5CSVZVDWKG7CRLMC6CTS45QC
7XUTAB76BF7WTONVKH2Y7WLIYHOSAPSCIVRU7Y7SKZWPITWOS2TAC
WJFK2JGGVKQN4LVHZNB4SOKH2GAE5BODBU2D6Y4CO76EIHSW6EVAC
B2MBQPT3B3N2EVCTHX34PKGIQSLUU622HEEVZNHQFL2PAJFFX3SQC
NE2O3IMQBR3OAPLJC22SPJ7AX2ABULA7XNSIZYFHCQLWC45T6GJAC
UD2O4RHXGNMJII7BYM75WDELMJFIAEJMMZM72VJMY34FGAB2DT4AC
2V4VNNOWTOFSM22PBTFKP73NMTFDYCHFKWTMD4BJVSXA3DGI33KAC
BZIXJKSVJVIFMYLNKQMNCCOEAEF44CJHCBRD6FYYQGFODQYINIRQC
VWANG2UUPKW6YVZ5CGFXSTLQYQPINOA24M3BEITIZGIX6H3WNRHQC
FIZ4UQEPE2TMH2KR47KKJS2B24LRHZPB7M6MCEI4RUCOBV56JU5QC
XIVFKBY3NZR3BGMKVLIW7GYHDAEN27DM75YPVMOOQGK2F5N4A6KQC
3HOGAA6NFEOTDI6JWZK6YXA4VQUTHJYEW4VFGJEVQJE457RZPJXAC
IIDW4VXRBD7WM6WBZ7JNZ4GMGCIWF2NMYM2W75SYV5XFLRTV63RAC
KCIWCVZOHG44WBOLKI2XK33WPHPRI5FWCETF4AOGTPZISKCW3CLQC
KQNKYNRSWOY2K7M5PY362RJT4CRUJVECVSCNGKSJJBPYI3NU4GDQC
KG47IF4CPCUT3BHS34WDRHTH5HYMBTY4OSTB3X7APR2E5ZJ32IYQC
OJZWEAJRLOA5FZAC6FMGBQ6XFQFDNO55IRWLFWDAYWM54MUIU5LAC
HNQLJR6ZWME6VBJ2Y7PSENLJPXC7INSS7NC2CKIWQAC776CQ74TQC
PVQ5HIOWTC6JLTGLL5F6HQTMZYNNSMSG7HHH2OFLNZGJXS7B4X4QC
6ZC47LQWQW6Z5NFJYGFMYN4WH3MNB26GHS76VRSW4CVKXVJS7AZQC
MZUT4VQLHUNTM6EKXC2RFPBJABQCVUVZZBZQTGIWHSREH2VJG7LAC
WKFYNYHZIPPSDL7K35JYHUFT7KPHDBPXCDYAM3LYKI45Y43KEQGAC
BAHRTQSATLMCS3GRVHSU6JECLCKPGU5EL5ROV5CJMKUOL7WKKEGAC
ActiveThorns = "
AMReX
IOUtil
WaveToyAMReX
"
$nlevels = 7
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 64 #TODO 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 50.0
# AMReX::verbose = yes
AMReX::xmin = -100.0
AMReX::ymin = -100.0
AMReX::zmin = -100.0
AMReX::xmax = +100.0
AMReX::ymax = +100.0
AMReX::zmax = +100.0
AMReX::ncells_x = $ncells
AMReX::ncells_y = $ncells
AMReX::ncells_z = $ncells
# AMReX::periodic_x = no
# AMReX::periodic_y = no
# AMReX::periodic_z = no
AMReX::max_num_levels = $nlevels
AMReX::regrid_every = 16
AMReX::regrid_error_threshold = 0.1
AMReX::dtfac = 0.5
WaveToyAMReX::initial_condition = "central potential"
WaveToyAMReX::boundary_condition = "initial"
WaveToyAMReX::central_point_charge = 1.0
WaveToyAMReX::central_point_radius = 1.0
IO::out_dir = $parfile
IO::out_every = $ncells * 2 ** ($nlevels - 1) / 32
Formaline
ActiveThorns = "
AMReX
IOUtil
WaveToyAMReX
"
$nlevels = 6
$ncells = 16
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($nlevels - 1) * 2
# AMReX::verbose = yes
AMReX::ncells_x = $ncells
AMReX::ncells_y = $ncells
AMReX::ncells_z = $ncells
AMReX::max_num_levels = $nlevels
AMReX::regrid_every = 16
AMReX::regrid_error_threshold = 0.01
AMReX::dtfac = 0.5
WaveToyAMReX::initial_condition = "periodic Gaussian"
# WaveToyAMReX::spatial_frequency_x = 0.5
# WaveToyAMReX::spatial_frequency_y = 0.0
# WaveToyAMReX::spatial_frequency_z = 0.0
IO::out_dir = $parfile
IO::out_every = 16 #TODO $ncells * 2 ** ($nlevels - 1) / 2
Formaline
ActiveThorns = "
AMReX
IOUtil
WaveToyAMReX
"
$nlevels = 7
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 64 #TODO 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 50.0
# AMReX::verbose = yes
AMReX::xmin = -100.0
AMReX::ymin = -100.0
AMReX::zmin = -100.0
AMReX::xmax = +100.0
AMReX::ymax = +100.0
AMReX::zmax = +100.0
AMReX::ncells_x = $ncells
AMReX::ncells_y = $ncells
AMReX::ncells_z = $ncells
# AMReX::periodic_x = no
# AMReX::periodic_y = no
# AMReX::periodic_z = no
AMReX::max_num_levels = $nlevels
AMReX::regrid_every = 16
AMReX::regrid_error_threshold = 0.1
AMReX::dtfac = 0.5
WaveToyAMReX::initial_condition = "central potential"
WaveToyAMReX::boundary_condition = "initial"
WaveToyAMReX::central_point_charge = 1.0
WaveToyAMReX::central_point_radius = 1.0
WaveToyAMReX::particle_charge = 1.0
IO::out_dir = $parfile
IO::out_every = $ncells * 2 ** ($nlevels - 1) / 32
Formaline
ActiveThorns = "
AMReX
IOUtil
WaveToyAMReX
"
$nlevels = 5
$ncells = 32
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($nlevels - 1) / 2
# AMReX::verbose = yes
AMReX::ncells_x = $ncells
AMReX::ncells_y = $ncells
AMReX::ncells_z = $ncells
AMReX::max_num_levels = $nlevels
AMReX::regrid_every = 16
AMReX::regrid_error_threshold = 0.01
AMReX::dtfac = 0.5
WaveToyAMReX::initial_condition = "Gaussian"
IO::out_dir = $parfile
IO::out_every = 2 #TODO $ncells * 2 ** ($nlevels - 1) / 32
Formaline
% *======================================================================*
% Cactus Thorn template for ThornGuide documentation
% Author: Ian Kelley
% Date: Sun Jun 02, 2002
% $Header$
%
% Thorn documentation in the latex file doc/documentation.tex
% will be included in ThornGuides built with the Cactus make system.
% The scripts employed by the make system automatically include
% pages about variables, parameters and scheduling parsed from the
% relevant thorn CCL files.
%
% This template contains guidelines which help to assure that your
% documentation will be correctly added to ThornGuides. More
% information is available in the Cactus UsersGuide.
%
% Guidelines:
% - Do not change anything before the line
% % START CACTUS THORNGUIDE",
% except for filling in the title, author, date, etc. fields.
% - Each of these fields should only be on ONE line.
% - Author names should be separated with a \\ or a comma.
% - You can define your own macros, but they must appear after
% the START CACTUS THORNGUIDE line, and must not redefine standard
% latex commands.
% - To avoid name clashes with other thorns, 'labels', 'citations',
% 'references', and 'image' names should conform to the following
% convention:
% ARRANGEMENT_THORN_LABEL
% For example, an image wave.eps in the arrangement CactusWave and
% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps
% - Graphics should only be included using the graphicx package.
% More specifically, with the "\includegraphics" command. Do
% not specify any graphic file extensions in your .tex file. This
% will allow us to create a PDF version of the ThornGuide
% via pdflatex.
% - References should be included with the latex "\bibitem" command.
% - Use \begin{abstract}...\end{abstract} instead of \abstract{...}
% - Do not use \appendix, instead include any appendices you need as
% standard sections.
% - For the benefit of our Perl scripts, and for future extensions,
% please use simple latex.
%
% *======================================================================*
%
% Example of including a graphic image:
% \begin{figure}[ht]
% \begin{center}
% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure}
% \end{center}
% \caption{Illustration of this and that}
% \label{MyArrangement_MyThorn_MyLabel}
% \end{figure}
%
% Example of using a label:
% \label{MyArrangement_MyThorn_MyLabel}
%
% Example of a citation:
% \cite{MyArrangement_MyThorn_Author99}
%
% Example of including a reference
% \bibitem{MyArrangement_MyThorn_Author99}
% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999),
% 1--16. {\tt http://www.nowhere.com/}}
%
% *======================================================================*
% If you are using CVS use this line to give version information
% $Header$
\documentclass{article}
% Use the Cactus ThornGuide style file
% (Automatically used from Cactus distribution, if you have a
% thorn without the Cactus Flesh download this from the Cactus
% homepage at www.cactuscode.org)
\usepackage{../../../../doc/latex/cactus}
\begin{document}
% The author of the documentation
\author{Erik Schnetter \textless schnetter@gmail.com\textgreater}
% The title of the document (not necessarily the name of the Thorn)
\title{WaveToyAMReX}
% the date your document was last changed, if your document is in CVS,
% please use:
% \date{$ $Date$ $}
\date{July 10 2019}
\maketitle
% Do not delete next line
% START CACTUS THORNGUIDE
% Add all definitions used in this documentation here
% \def\mydef etc
% Add an abstract for this thorn's documentation
\begin{abstract}
\end{abstract}
% The following sections are suggestive only.
% Remove them or add your own.
\section{Introduction}
\section{Physical System}
\section{Numerical Implementation}
\section{Using This Thorn}
\subsection{Obtaining This Thorn}
\subsection{Basic Usage}
\subsection{Special Behaviour}
\subsection{Interaction With Other Thorns}
\subsection{Examples}
\subsection{Support and Feedback}
\section{History}
\subsection{Thorn Source Code}
\subsection{Thorn Documentation}
\subsection{Acknowledgements}
\begin{thebibliography}{9}
\end{thebibliography}
% Do not delete next line
% END CACTUS THORNGUIDE
\end{document}
ActiveThorns = "
AMReX
IOUtil
WaveToyAMReX
"
$maxlev = 3
$ncells = 128
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($maxlev - 1) * 2
AMReX::ncells_x = $ncells
AMReX::ncells_y = 1
AMReX::ncells_z = 1
AMReX::blocking_factor_x = 1
AMReX::blocking_factor_y = 1
AMReX::blocking_factor_z = 1
AMReX::max_grid_size_x = 1048576
AMReX::max_grid_size_y = 1048576
AMReX::max_grid_size_z = 1048576
AMReX::max_num_levels = $maxlev
AMReX::dtfac = 0.5
IO::out_dir = "wavetoy-3"
IO::out_every = $ncells * 2 ** ($maxlev - 1) / 2
ActiveThorns = "
AMReX
IOUtil
WaveToyAMReX
"
$maxlev = 2
$ncells = 128
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($maxlev - 1) * 2
AMReX::ncells_x = $ncells
AMReX::ncells_y = 1
AMReX::ncells_z = 1
AMReX::blocking_factor_x = 1
AMReX::blocking_factor_y = 1
AMReX::blocking_factor_z = 1
AMReX::max_grid_size_x = 1048576
AMReX::max_grid_size_y = 1048576
AMReX::max_grid_size_z = 1048576
AMReX::max_num_levels = $maxlev
AMReX::dtfac = 0.5 / 2
IO::out_dir = "wavetoy-2"
IO::out_every = $ncells * 2 ** ($maxlev - 1) / 2
ActiveThorns = "
AMReX
IOUtil
WaveToyAMReX
"
$maxlev = 1
$ncells = 128
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($maxlev - 1) * 2
AMReX::ncells_x = $ncells
AMReX::ncells_y = 1
AMReX::ncells_z = 1
AMReX::blocking_factor_x = 1
AMReX::blocking_factor_y = 1
AMReX::blocking_factor_z = 1
AMReX::max_grid_size_x = 1048576
AMReX::max_grid_size_y = 1048576
AMReX::max_grid_size_z = 1048576
AMReX::max_num_levels = $maxlev
AMReX::dtfac = 0.5 / 4
IO::out_dir = "wavetoy-1"
IO::out_every = $ncells * 2 ** ($maxlev - 1) / 2
#include <AMReX.hxx>
using namespace AMReX;
#include <cctk.h>
#include <cctk_Arguments.h>
#include <cctk_Parameters.h>
#include <atomic>
using namespace std;
namespace AMReXTest {
extern "C" void AMReXTest_CheckLoops(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
CCTK_VINFO("Check loop iterators");
// Set all grid points to zero: Loop over the interior, then
// synchronize
{
int count = 0;
for (MFIter mfi(ghext->mfab); mfi.isValid(); ++mfi) {
const Box &fbx = mfi.fabbox();
const Box &bx = mfi.validbox();
const Dim3 amin = lbound(fbx);
const Dim3 amax = ubound(fbx);
const Dim3 imin = lbound(bx);
const Dim3 imax = ubound(bx);
constexpr int di = 1;
const int dj = di * (amax.x - amin.x + 1);
const int dk = dj * (amax.y - amin.y + 1);
const Array4<CCTK_REAL> &vars = ghext->mfab.array(mfi);
CCTK_REAL *restrict const check = vars.ptr(0, 0, 0, 0);
for (int k = imin.z; k <= imax.z; ++k)
for (int j = imin.y; j <= imax.y; ++j)
for (int i = imin.x; i <= imax.x; ++i) {
const int idx = i * di + j * dj + k * dk;
check[idx] = 0;
++count;
}
}
ParallelDescriptor::ReduceIntSum(count);
assert(count == ghext->ncells * ghext->ncells * ghext->ncells);
}
ghext->mfab.FillBoundary(ghext->geom.periodicity());
// Increase each grid point (both interior and ghost zones) by one
// using atomic operations. This will catch cases where we either
// omit points or traverse points twice.
#pragma omp parallel
for (MFIter mfi(ghext->mfab,
MFItInfo().SetDynamic(true).EnableTiling({1024000, 16, 32}));
mfi.isValid(); ++mfi) {
const Box &fbx = mfi.fabbox();
const Box &bx = mfi.growntilebox();
const Dim3 amin = lbound(fbx);
const Dim3 amax = ubound(fbx);
const Dim3 imin = lbound(bx);
const Dim3 imax = ubound(bx);
constexpr int di = 1;
const int dj = di * (amax.x - amin.x + 1);
const int dk = dj * (amax.y - amin.y + 1);
const Array4<CCTK_REAL> &vars = ghext->mfab.array(mfi);
atomic<CCTK_REAL> *restrict const check =
(atomic<CCTK_REAL> *)vars.ptr(0, 0, 0, 0);
for (int k = imin.z; k <= imax.z; ++k)
for (int j = imin.y; j <= imax.y; ++j)
#pragma omp simd
for (int i = imin.x; i <= imax.x; ++i) {
const int idx = i * di + j * dj + k * dk;
// check[idx] += 1.0;
CCTK_REAL expected = 0.0;
/*bool success = */ check[idx].compare_exchange_strong(expected, 1.0);
// assert(success);
}
}
// Check all grid points whether they are set to one
for (MFIter mfi(ghext->mfab); mfi.isValid(); ++mfi) {
const Box &fbx = mfi.fabbox();
const Box &bx = mfi.fabbox();
const Dim3 amin = lbound(fbx);
const Dim3 amax = ubound(fbx);
const Dim3 imin = lbound(bx);
const Dim3 imax = ubound(bx);
constexpr int di = 1;
const int dj = di * (amax.x - amin.x + 1);
const int dk = dj * (amax.y - amin.y + 1);
const Array4<CCTK_REAL> &vars = ghext->mfab.array(mfi);
CCTK_REAL *restrict const check = vars.ptr(0, 0, 0, 0);
for (int k = imin.z; k <= imax.z; ++k)
for (int j = imin.y; j <= imax.y; ++j)
for (int i = imin.x; i <= imax.x; ++i) {
const int idx = i * di + j * dj + k * dk;
assert(check[idx] == 1);
}
}
}
} // namespace AMReXTest
# Schedule definitions for thorn AMReXTest
SCHEDULE AMReXTest_CheckLoops AT basegrid
{
LANG: C
} "Check looping constructs"
OPTIONS: level
Cactus Code Thorn AMReXTest
Author(s) : Erik Schnetter <schnetter@gmail.com>
Maintainer(s): Erik Schnetter <schnetter@gmail.com>
Licence : LGPL
--------------------------------------------------------------------------
1. Purpose
Various self-tests of the AMReX driver
ActiveThorns = "
AMReX
Formaline
IOUtil
HydroToyAMReX
SystemTopology
TimerReport
"
$nlevels = 3
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 1.0
AMReX::verbose = no
AMReX::xmin = -1.0
AMReX::ymin = -1.0
AMReX::zmin = -1.0
AMReX::xmax = +1.0
AMReX::ymax = +1.0
AMReX::zmax = +1.0
AMReX::ncells_x = $ncells
AMReX::ncells_y = $ncells
AMReX::ncells_z = $ncells
AMReX::max_num_levels = $nlevels
AMReX::regrid_every = 16
AMReX::regrid_error_threshold = 0.01
AMReX::do_reflux = yes
AMReX::dtfac = 0.25
HydroToyAMReX::setup = "spherical shock"
IO::out_dir = $parfile
IO::out_every = $ncells * 2 ** ($nlevels - 1) / 32
# AMReX::out_tsv = yes
TimerReport::out_every = $ncells * 2 ** ($nlevels - 1) / 32
TimerReport::out_filename = "TimerReport"
TimerReport::output_all_timers_together = yes
TimerReport::output_all_timers_readable = yes
TimerReport::n_top_timers = 50
HydroToyAMReX::output_every = 1
AMReX::prolongation_type = "conservative"
ActiveThorns = "
AMReX
IOUtil
MaxwellToyAMReX
"
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 2.0
# AMReX::verbose = yes
AMReX::xmin = -1.0
AMReX::ymin = -1.0
AMReX::zmin = -1.0
AMReX::xmax = +1.0
AMReX::ymax = +1.0
AMReX::zmax = +1.0
AMReX::ncells_x = $ncells
AMReX::ncells_y = $ncells
AMReX::ncells_z = $ncells
AMReX::prolongation_type = "ddf"
AMReX::max_num_levels = $nlevels
AMReX::regrid_every = 16
AMReX::regrid_error_threshold = 0.1
AMReX::dtfac = 0.5
MaxwellToyAMReX::spatial_frequency_x = 0.5
MaxwellToyAMReX::spatial_frequency_y = 0.0
MaxwellToyAMReX::spatial_frequency_z = 0.0
IO::out_dir = $parfile
IO::out_every = $ncells * 2 ** ($nlevels - 1) / 32
# AMReX::out_tsv = yes
$nlevels = 2
Formaline
ActiveThorns = "
CarpetX
IOUtil
WaveToyCarpetX
"
$maxlev = 1
$ncells = 128
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($maxlev - 1) * 2
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = 1
CarpetX::ncells_z = 1
CarpetX::blocking_factor_x = 1
CarpetX::blocking_factor_y = 1
CarpetX::blocking_factor_z = 1
CarpetX::max_grid_size_x = 1048576
CarpetX::max_grid_size_y = 1048576
CarpetX::max_grid_size_z = 1048576
CarpetX::max_num_levels = $maxlev
CarpetX::dtfac = 0.5 / 4
IO::out_dir = "wavetoy-1"
IO::out_every = $ncells * 2 ** ($maxlev - 1) / 2
ActiveThorns = "
CarpetX
IOUtil
WaveToyCarpetX
"
$maxlev = 2
$ncells = 128
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($maxlev - 1) * 2
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = 1
CarpetX::ncells_z = 1
CarpetX::blocking_factor_x = 1
CarpetX::blocking_factor_y = 1
CarpetX::blocking_factor_z = 1
CarpetX::max_grid_size_x = 1048576
CarpetX::max_grid_size_y = 1048576
CarpetX::max_grid_size_z = 1048576
CarpetX::max_num_levels = $maxlev
CarpetX::dtfac = 0.5 / 2
IO::out_dir = "wavetoy-2"
IO::out_every = $ncells * 2 ** ($maxlev - 1) / 2
ActiveThorns = "
CarpetX
IOUtil
WaveToyCarpetX
"
$maxlev = 3
$ncells = 128
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($maxlev - 1) * 2
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = 1
CarpetX::ncells_z = 1
CarpetX::blocking_factor_x = 1
CarpetX::blocking_factor_y = 1
CarpetX::blocking_factor_z = 1
CarpetX::max_grid_size_x = 1048576
CarpetX::max_grid_size_y = 1048576
CarpetX::max_grid_size_z = 1048576
CarpetX::max_num_levels = $maxlev
CarpetX::dtfac = 0.5
IO::out_dir = "wavetoy-3"
IO::out_every = $ncells * 2 ** ($maxlev - 1) / 2
extern "C" void AMReX_GetTileExtent(const void *restrict cctkGH_,
CCTK_INT *restrict tile_min,
CCTK_INT *restrict tile_max) {
extern "C" void CarpetX_GetTileExtent(const void *restrict cctkGH_,
CCTK_INT *restrict tile_min,
CCTK_INT *restrict tile_max) {
# Configuration definitions for thorn HydroToyCarpetX
CCTK_REAL conserved TYPE=gf TIMELEVELS=2 TAGS='index={1 1 1} fluxes="HydroToyAMReX::flux_x HydroToyAMReX::flux_y HydroToyAMReX::flux_z"'
CCTK_REAL conserved TYPE=gf TIMELEVELS=2 TAGS='index={1 1 1} fluxes="HydroToyCarpetX::flux_x HydroToyCarpetX::flux_y HydroToyCarpetX::flux_z"'
ActiveThorns = "
CarpetX
Formaline
IOUtil
HydroToyCarpetX
SystemTopology
TimerReport
"
$nlevels = 3
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 1.0
CarpetX::verbose = no
CarpetX::xmin = -1.0
CarpetX::ymin = -1.0
CarpetX::zmin = -1.0
CarpetX::xmax = +1.0
CarpetX::ymax = +1.0
CarpetX::zmax = +1.0
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = $ncells
CarpetX::ncells_z = $ncells
CarpetX::max_num_levels = $nlevels
CarpetX::regrid_every = 16
CarpetX::regrid_error_threshold = 0.01
CarpetX::prolongation_type = "conservative"
CarpetX::do_reflux = yes
CarpetX::dtfac = 0.25
HydroToyCarpetX::setup = "spherical shock"
HydroToyCarpetX::output_every = 1
IO::out_dir = $parfile
IO::out_every = $ncells * 2 ** ($nlevels - 1) / 32
# CarpetX::out_tsv = yes
TimerReport::out_every = $ncells * 2 ** ($nlevels - 1) / 32
TimerReport::out_filename = "TimerReport"
TimerReport::output_all_timers_together = yes
TimerReport::output_all_timers_readable = yes
TimerReport::n_top_timers = 50
extern "C" void HydroToyAMReX_Initialize(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_HydroToyAMReX_Initialize;
extern "C" void HydroToyCarpetX_Initialize(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_HydroToyCarpetX_Initialize;
extern "C" void HydroToyAMReX_Pressure(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_HydroToyAMReX_Pressure;
extern "C" void HydroToyCarpetX_Pressure(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_HydroToyCarpetX_Pressure;
extern "C" void HydroToyAMReX_EstimateError(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_HydroToyAMReX_EstimateError;
extern "C" void HydroToyCarpetX_EstimateError(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_HydroToyCarpetX_EstimateError;
extern "C" void HydroToyAMReX_Output(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_HydroToyAMReX_Output;
extern "C" void HydroToyCarpetX_Output(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_HydroToyCarpetX_Output;
# Configuration definitions for thorn MaxwellToyCarpetX
ActiveThorns = "
CarpetX
Formaline
IOUtil
MaxwellToyCarpetX
SystemTopology
# TerminationTrigger
TimerReport
"
$nlevels = 5
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 1.0
CarpetX::verbose = no
CarpetX::poison_undefined_values = no
CarpetX::xmin = -1.0
CarpetX::ymin = -1.0
CarpetX::zmin = -1.0
CarpetX::xmax = +1.0
CarpetX::ymax = +1.0
CarpetX::zmax = +1.0
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = $ncells
CarpetX::ncells_z = $ncells
CarpetX::prolongation_type = "ddf"
CarpetX::max_num_levels = $nlevels
CarpetX::regrid_every = 16
CarpetX::regrid_error_threshold = 0.01
CarpetX::dtfac = 0.5
MaxwellToyCarpetX::evolve_b = yes
MaxwellToyCarpetX::initial_condition = "Gaussian wave"
MaxwellToyCarpetX::spatial_frequency_x = 0.5
MaxwellToyCarpetX::spatial_frequency_y = 0.0
MaxwellToyCarpetX::spatial_frequency_z = 0.0
MaxwellToyCarpetX::analyse_every = 0
IO::out_dir = $parfile
IO::out_every = 0
TimerReport::out_every = $ncells * 2 ** ($nlevels - 1) / 32
TimerReport::out_filename = "TimerReport"
TimerReport::output_all_timers_together = yes
TimerReport::output_all_timers_readable = yes
TimerReport::n_top_timers = 50
# TerminationTrigger::termination_from_file = yes
# TerminationTrigger::create_termination_file = yes
# TerminationTrigger::termination_file = "../TERMINATE"
MaxwellToyAMReX::spatial_frequency_x = 0.5
MaxwellToyAMReX::spatial_frequency_y = 0.0
MaxwellToyAMReX::spatial_frequency_z = 0.0
MaxwellToyCarpetX::spatial_frequency_x = 0.5
MaxwellToyCarpetX::spatial_frequency_y = 0.0
MaxwellToyCarpetX::spatial_frequency_z = 0.0
ActiveThorns = "
CarpetX
Formaline
IOUtil
MaxwellToyCarpetX
"
$nlevels = 2
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 2.0
# CarpetX::verbose = yes
CarpetX::xmin = -1.0
CarpetX::ymin = -1.0
CarpetX::zmin = -1.0
CarpetX::xmax = +1.0
CarpetX::ymax = +1.0
CarpetX::zmax = +1.0
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = $ncells
CarpetX::ncells_z = $ncells
CarpetX::prolongation_type = "ddf"
CarpetX::max_num_levels = $nlevels
CarpetX::regrid_every = 16
CarpetX::regrid_error_threshold = 0.1
CarpetX::dtfac = 0.5
MaxwellToyCarpetX::spatial_frequency_x = 0.5
MaxwellToyCarpetX::spatial_frequency_y = 0.0
MaxwellToyCarpetX::spatial_frequency_z = 0.0
IO::out_dir = $parfile
IO::out_every = $ncells * 2 ** ($nlevels - 1) / 32
# CarpetX::out_tsv = yes
extern "C" void MaxwellToyAMReX_Initialize(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_MaxwellToyAMReX_Initialize;
extern "C" void MaxwellToyCarpetX_Initialize(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_MaxwellToyCarpetX_Initialize;
extern "C" void MaxwellToyAMReX_Dependents1(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_MaxwellToyAMReX_Dependents1;
extern "C" void MaxwellToyCarpetX_Dependents1(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_MaxwellToyCarpetX_Dependents1;
extern "C" void MaxwellToyAMReX_Evolve1(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_MaxwellToyAMReX_Evolve1;
extern "C" void MaxwellToyCarpetX_Evolve1(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_MaxwellToyCarpetX_Evolve1;
AMReX::ghost_size = 3
AMReX::prolongation_type = "conservative"
AMReX::prolongation_order = 1
AMReX::verbose = yes
CarpetX::ghost_size = 3
CarpetX::prolongation_type = "conservative"
CarpetX::prolongation_order = 1
CarpetX::verbose = yes
AMReX::blocking_factor_x = $blocking_factor
AMReX::blocking_factor_y = 1 # $blocking_factor
AMReX::blocking_factor_z = 1 # $blocking_factor
CarpetX::blocking_factor_x = $blocking_factor
CarpetX::blocking_factor_y = 1 # $blocking_factor
CarpetX::blocking_factor_z = 1 # $blocking_factor
AMReX::blocking_factor_x = $blocking_factor
AMReX::blocking_factor_y = 1 # $blocking_factor
AMReX::blocking_factor_z = 1 # $blocking_factor
CarpetX::blocking_factor_x = $blocking_factor
CarpetX::blocking_factor_y = 1 # $blocking_factor
CarpetX::blocking_factor_z = 1 # $blocking_factor
AMReX::max_num_levels = $nlevels
AMReX::regrid_every = 1
AMReX::regrid_error_threshold = 0.01
CarpetX::max_num_levels = $nlevels
CarpetX::regrid_every = 1
CarpetX::regrid_error_threshold = 0.01
AMReX::blocking_factor_x = $blocking_factor
AMReX::blocking_factor_y = 1 # $blocking_factor
AMReX::blocking_factor_z = 1 # $blocking_factor
CarpetX::blocking_factor_x = $blocking_factor
CarpetX::blocking_factor_y = 1 # $blocking_factor
CarpetX::blocking_factor_z = 1 # $blocking_factor
# Configuration definitions for thorn WaveToyCarpetX
ActiveThorns = "
CarpetX
Formaline
IOUtil
WaveToyCarpetX
"
$nlevels = 5
$ncells = 32
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($nlevels - 1) / 2
# CarpetX::verbose = yes
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = $ncells
CarpetX::ncells_z = $ncells
CarpetX::max_num_levels = $nlevels
CarpetX::regrid_every = 16
CarpetX::regrid_error_threshold = 0.01
CarpetX::dtfac = 0.5
WaveToyCarpetX::initial_condition = "Gaussian"
IO::out_dir = $parfile
IO::out_every = 2 #TODO $ncells * 2 ** ($nlevels - 1) / 32
ActiveThorns = "
CarpetX
Formaline
IOUtil
WaveToyCarpetX
"
$nlevels = 7
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 64 #TODO 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 50.0
# CarpetX::verbose = yes
CarpetX::xmin = -100.0
CarpetX::ymin = -100.0
CarpetX::zmin = -100.0
CarpetX::xmax = +100.0
CarpetX::ymax = +100.0
CarpetX::zmax = +100.0
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = $ncells
CarpetX::ncells_z = $ncells
# CarpetX::periodic_x = no
# CarpetX::periodic_y = no
# CarpetX::periodic_z = no
CarpetX::max_num_levels = $nlevels
CarpetX::regrid_every = 16
CarpetX::regrid_error_threshold = 0.1
CarpetX::dtfac = 0.5
WaveToyCarpetX::initial_condition = "central potential"
WaveToyCarpetX::boundary_condition = "initial"
WaveToyCarpetX::central_point_charge = 1.0
WaveToyCarpetX::central_point_radius = 1.0
WaveToyCarpetX::particle_charge = 1.0
IO::out_dir = $parfile
IO::out_every = $ncells * 2 ** ($nlevels - 1) / 32
ActiveThorns = "
CarpetX
Formaline
IOUtil
WaveToyCarpetX
"
$nlevels = 6
$ncells = 16
Cactus::cctk_show_schedule = no
Cactus::cctk_itlast = $ncells * 2 ** ($nlevels - 1) * 2
# CarpetX::verbose = yes
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = $ncells
CarpetX::ncells_z = $ncells
CarpetX::max_num_levels = $nlevels
CarpetX::regrid_every = 16
CarpetX::regrid_error_threshold = 0.01
CarpetX::dtfac = 0.5
WaveToyCarpetX::initial_condition = "periodic Gaussian"
# WaveToyCarpetX::spatial_frequency_x = 0.5
# WaveToyCarpetX::spatial_frequency_y = 0.0
# WaveToyCarpetX::spatial_frequency_z = 0.0
IO::out_dir = $parfile
IO::out_every = 16 #TODO $ncells * 2 ** ($nlevels - 1) / 2
ActiveThorns = "
CarpetX
Formaline
IOUtil
WaveToyCarpetX
"
$nlevels = 7
$ncells = 32
Cactus::cctk_show_schedule = no
# Cactus::terminate = "iteration"
# Cactus::cctk_itlast = 64 #TODO 0
Cactus::terminate = "time"
Cactus::cctk_final_time = 50.0
# CarpetX::verbose = yes
CarpetX::xmin = -100.0
CarpetX::ymin = -100.0
CarpetX::zmin = -100.0
CarpetX::xmax = +100.0
CarpetX::ymax = +100.0
CarpetX::zmax = +100.0
CarpetX::ncells_x = $ncells
CarpetX::ncells_y = $ncells
CarpetX::ncells_z = $ncells
# CarpetX::periodic_x = no
# CarpetX::periodic_y = no
# CarpetX::periodic_z = no
CarpetX::max_num_levels = $nlevels
CarpetX::regrid_every = 16
CarpetX::regrid_error_threshold = 0.1
CarpetX::dtfac = 0.5
WaveToyCarpetX::initial_condition = "central potential"
WaveToyCarpetX::boundary_condition = "initial"
WaveToyCarpetX::central_point_charge = 1.0
WaveToyCarpetX::central_point_radius = 1.0
IO::out_dir = $parfile
IO::out_every = $ncells * 2 ** ($nlevels - 1) / 32
extern "C" void WaveToyAMReX_Initialize(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyAMReX_Initialize;
extern "C" void WaveToyCarpetX_Initialize(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyCarpetX_Initialize;
extern "C" void WaveToyAMReX_InitializeParticle(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyAMReX_InitializeParticle;
extern "C" void WaveToyCarpetX_InitializeParticle(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyCarpetX_InitializeParticle;
extern "C" void WaveToyAMReX_EstimateError(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyAMReX_EstimateError;
extern "C" void WaveToyCarpetX_EstimateError(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyCarpetX_EstimateError;
extern "C" void WaveToyAMReX_EvolveParticle(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyAMReX_EvolveParticle;
extern "C" void WaveToyCarpetX_EvolveParticle(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyCarpetX_EvolveParticle;
extern "C" void WaveToyAMReX_NaNCheck_past(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyAMReX_NaNCheck_past;
extern "C" void WaveToyCarpetX_NaNCheck_past(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyCarpetX_NaNCheck_past;
extern "C" void WaveToyAMReX_NaNCheck_current(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyAMReX_NaNCheck_current;
extern "C" void WaveToyCarpetX_NaNCheck_current(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyCarpetX_NaNCheck_current;
extern "C" void WaveToyAMReX_OutputParticle(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyAMReX_OutputParticle;
extern "C" void WaveToyCarpetX_OutputParticle(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS_WaveToyCarpetX_OutputParticle;
AMReX/AMReX
# AMReX/AMReXTest
AMReX/HydroToyAMReX
AMReX/MaxwellToyAMReX
AMReX/TestProlongate
AMReX/WaveToyAMReX
CarpetX/CarpetX
CarpetX/HydroToyCarpetX
CarpetX/MaxwellToyCarpetX
CarpetX/TestProlongate
CarpetX/WaveToyCarpetX