diff --git a/.gitignore b/.gitignore index c54ae8b623..07d505edba 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ GAMER_ExtractProfile .vscode src/Makefile src/Makefile.log +src/.local_settings diff --git a/configs/mac_clang.config b/configs/mac_clang.config new file mode 100644 index 0000000000..592511a212 --- /dev/null +++ b/configs/mac_clang.config @@ -0,0 +1,41 @@ +# A "typical" macOS installation without GPU +FFTW2_PATH /usr/local/fftw-2.1.5 +MPI_PATH /usr/local/mpich-3.2 +GSL_PATH /usr/local/gsl-1.16 +HDF5_PATH ${HOME}/mambaforge/envs/py312 + +# compilers +CXX clang++ +CXX_MPI mpicxx + +# clang flags +CXXFLAG -g +CXXFLAG -O3 +CXXFLAG -std=c++11 +#CXXFLAG -Ofast +CXXFLAG -Wall +CXXFLAG -Wextra +CXXFLAG -Wno-unused-variable +CXXFLAG -Wno-unused-parameter +CXXFLAG -Wno-uninitialized +CXXFLAG -Wno-unused-but-set-variable +CXXFLAG -Wno-unused-function +CXXFLAG -Wno-unused-result +CXXFLAG -Wno-implicit-fallthrough +CXXFLAG -Wno-parentheses +CXXFLAG -Wno-unknown-pragmas +CXXFLAG -Wno-mismatched-tags +CXXFLAG -Wno-deprecated-declarations +CXXFLAG -Wno-missing-braces + +OPENMPFLAG -Xclang -fopenmp + +LIBFLAG -lomp + +NVCCFLAG_COM -O3 +#NVCCFLAG_COM -use_fast_math +NVCCFLAG_FLU -Xptxas -dlcm=ca -prec-div=false -ftz=true +NVCCFLAG_POT -Xptxas -dlcm=ca + +#gpu +GPU_COMPUTE_CAPABILITY -1 diff --git a/configs/mac.config b/configs/mac_gnu.config similarity index 90% rename from configs/mac.config rename to configs/mac_gnu.config index fc963cb87d..bf1c46444b 100644 --- a/configs/mac.config +++ b/configs/mac_gnu.config @@ -1,17 +1,17 @@ # A "typical" macOS installation without GPU FFTW2_PATH /usr/local/fftw-2.1.5 MPI_PATH /usr/local/mpich-3.2 -HDF5_PATH ${HOME}/miniconda3 GSL_PATH /usr/local/gsl-1.16 +HDF5_PATH ${HOME}/mambaforge/envs/py312 # compilers -CXX g++ +CXX g++-12 CXX_MPI mpicxx # gnu flags CXXFLAG -g CXXFLAG -O3 -#CXXFLAG -std=c++11 +CXXFLAG -std=c++11 #CXXFLAG -Ofast CXXFLAG -Wall CXXFLAG -Wextra diff --git a/doc/wiki/Installation-related/Installation:-Machine-Configuration-File.md b/doc/wiki/Installation-related/Installation:-Machine-Configuration-File.md index 9bc9f15ce0..93e7de28c0 100644 --- a/doc/wiki/Installation-related/Installation:-Machine-Configuration-File.md +++ b/doc/wiki/Installation-related/Installation:-Machine-Configuration-File.md @@ -1,7 +1,18 @@ +The machine configuration file is located under `configs`. It specifies the library paths, compiler types, compilation flags, and GPU compute capability. + > [!TIP] -> To set up your machine configuration file, make a copy of `template.config` and modify it. +> Check the `configs` directory to see if a configuration file is already available for your machine. + +## Set Up the Machine Configuration File + +To set up your machine configuration file, go to `configs` and make a copy of `template.config` to modify: + +```bash +cd configs +cp template.config your_machine.config +``` -The machine configuration file is under `configs`. The configuration file contains the library paths, the compiler types, the compilation flags, and the GPU compute capability. +Please refer to the following sections to set up your machine configuration file. ### 0. Rules of the configuration file * Comments must start with `#`. diff --git a/doc/wiki/Installation-related/Installation:-Option-List.md b/doc/wiki/Installation-related/Installation:-Option-List.md index ac4741ff2f..ed1c0aff93 100644 --- a/doc/wiki/Installation-related/Installation:-Option-List.md +++ b/doc/wiki/Installation-related/Installation:-Option-List.md @@ -22,9 +22,9 @@ disabled). See the "Restriction" of each option carefully. | Option | Value | Description | |:---:|:---:|---| -| `-h` | - | Show a short help message. | -| `-lh` | - | Show a detailed help message. | -| `--machine` | Filename string | Select the `*.config` file from the `configs` directory. | +| `-h` | - | Show a short help message. | +| `-lh` | - | Show a detailed help message. | +| `--machine` | Filename string | Select the `*.config` file from the `configs` directory. It will overwrite the default machine set in the [[default setting file \| Installation#default_setting]]. |                  diff --git a/doc/wiki/Installation.md b/doc/wiki/Installation.md index 64439b570d..5f1e1e85f9 100644 --- a/doc/wiki/Installation.md +++ b/doc/wiki/Installation.md @@ -2,33 +2,46 @@ Please see [[Machine Configuration File | Installation:-Machine-Configuration-File]]. -2. Go to the source directory + + +2. Set your machine configuration file as default + + ```bash + sh tool/config/set_settings.sh --local --machine=your_machine + ``` + +> [!NOTE] +> If you want to set the default machine configuration file for all GAMER copies under your user account, use the `--global` option instead of `--local`. +You can still override the global setting for individual GAMER copies using the `--local` option. +Furthermore, you can override the default setting by passing the [[--machine | Installation:-Option-List#--machine]]=`your_machine` when executing `configure.py`. + +3. Go to the source directory ```bash cd src ``` -3. Generate `Makefile` using the Python script `configure.py` +4. Generate `Makefile` using the Python script `configure.py` To get the `Makefile`, please execute the following command: ```bash - python configure.py --machine=your_configuration_file [--your_arguments] + python configure.py [--your_arguments] ``` - `your_configuration_file` is the configuration filename you got from step 1, and `[--your_arguments]` should match your simulation requirements. Please check out [[Option List | Installation:-Option-List]] for all the available options. + `[--your_arguments]` represent the options that should align with your simulation requirements. Refer to [[Option List | Installation:-Option-List]] for a complete list of available options. - For example, the following command uses the `configs/pleiades.config` machine configuration, sets the FFTW method to `FFTW2`, and enables gravity and GPU. + For example, the following command sets the FFTW method to `FFTW2` and enables gravity and GPU. ``` bash - python configure.py --machine=pleiades --fftw=FFTW2 --gravity=true --gpu=true + python configure.py --fftw=FFTW2 --gravity=true --gpu=true ``` > [!TIP] > An example script `generate_make.sh` to generate Makefile can be found in each test problem folder, e.g., `example/test_problem/Hydro/AcousticWave/generate_make.sh`. -4. Compile the code +5. Compile the code ```bash make clean diff --git a/doc/wiki/Quick-Start-related/Quick-Start:-1D-Shock-Tube.md b/doc/wiki/Quick-Start-related/Quick-Start:-1D-Shock-Tube.md index a6d22fa763..e3f480de30 100644 --- a/doc/wiki/Quick-Start-related/Quick-Start:-1D-Shock-Tube.md +++ b/doc/wiki/Quick-Start-related/Quick-Start:-1D-Shock-Tube.md @@ -236,7 +236,7 @@ following modifications. 1\. Re-generate `Makefile` by [[configure.py | Installation]] and recompile `gamer`. ``` bash -sh generate_make.sh --machine=YOUR_MACHINE --openmp=true --gpu=true +sh generate_make.sh --openmp=true --gpu=true make clean make -j4 ``` diff --git a/doc/wiki/Quick-Start.md b/doc/wiki/Quick-Start.md index e44b22220b..17a46b92f0 100644 --- a/doc/wiki/Quick-Start.md +++ b/doc/wiki/Quick-Start.md @@ -4,9 +4,21 @@ Follow the instructions in [[Download]] to get the latest version of GAMER. ### Setup Your Machine Configuration File -Follow the instructions in [[Machine Configuration File | Installation:-Machine-Configuration-File]] to set the configuration file of your machine. +The machine configuration file is located under `configs`. This file contains the library paths, compiler types, compilation flags, and GPU compute capability. Check the existing configuration files to see if one matches your machine. + +If no suitable configuration file is available, you will need to create a new one. Follow the instructions in [[Machine Configuration File | Installation:-Machine-Configuration-File]] to set up a configuration file for your machine. + +If a configuration file matches your machine, you can set it as the default by running + +```bash +sh tool/config/set_settings.sh --local --machine=your_machine +``` + +For example, setting `--machine=pleiades` with the above command will use the `configs/pleiades.config` machine configuration when compiling the code. ### Quick Demos +Read the following guides to learn how to configure, compile, and run GAMER. + 1. [[1D Shock Tube: OpenMP with/without GPU acceleration | Quick-Start:-1D-Shock-Tube]] 2. [[3D Blast Wave: hybrid MPI/OpenMP/GPU + yt analysis | Quick-Start:-3D-Blast-Wave]] diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md index af754c96b2..0288725ab3 100644 --- a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md @@ -292,7 +292,7 @@ For variables with `Default/Min/Max` labeled as `Depend`, click the parameter na | [[ OPT__OUTPUT_LORENTZ \| Runtime-Parameters:-Outputs#OPT__OUTPUT_LORENTZ ]] | 0 | None | None | output Lorentz factor [0] ##SRHD ONLY## | | [[ OPT__OUTPUT_MACH \| Runtime-Parameters:-Outputs#OPT__OUTPUT_MACH ]] | 0 | None | None | output mach number [0] ##HYDRO ONLY## | | [[ OPT__OUTPUT_MODE \| Runtime-Parameters:-Outputs#OPT__OUTPUT_MODE ]] | -1 | 1 | 3 | (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 | -| [[ OPT__OUTPUT_PART \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PART ]] | 0 | 0 | 7 | output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] | +| [[ OPT__OUTPUT_PART \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PART ]] | 0 | 0 | 8 | output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] | | [[ OPT__OUTPUT_PAR_DENS \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PAR_DENS ]] | PAR_OUTPUT_DENS_PAR_ONLY | 0 | 2 | output the particle or total mass density on grids: (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## | | [[ OPT__OUTPUT_PAR_MESH \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PAR_MESH ]] | Depend | Depend | Depend | output the attributes of tracer particles mapped from mesh quantities -> edit "Input__Par_Mesh" [1] ##PARTICLE ONLY## | | [[ OPT__OUTPUT_PAR_MODE \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PAR_MODE ]] | 0 | 0 | 2 | output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## | @@ -300,7 +300,8 @@ For variables with `Default/Min/Max` labeled as `Depend`, click the parameter na | [[ OPT__OUTPUT_PRES \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PRES ]] | 0 | None | None | output gas pressure [0] ##HYDRO ONLY## | | [[ OPT__OUTPUT_RESTART \| Runtime-Parameters:-Outputs#OPT__OUTPUT_RESTART ]] | 0 | None | None | output data immediately after restart [0] | | [[ OPT__OUTPUT_TEMP \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TEMP ]] | OutTempDefault | None | None | output gas temperature [0 (HD) or 1 (SRHD)] ##HYDRO ONLY## | -| [[ OPT__OUTPUT_TEXT_FORMAT_FLT \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TEXT_FORMAT_FLT ]] | "%24.16e" | None | None | string format of output text files [%24.16e] | +| [[ OPT__OUTPUT_TEXT_FORMAT_FLT \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TEXT_FORMAT_FLT ]] | "%24.16e" | None | None | string format of floating-point variables in output text files [%24.16e] | +| [[ OPT__OUTPUT_TEXT_LENGTH_INT \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TEXT_LENGTH_INT ]] | 12 | 0 | None | string length of integer variables in output text files [12] | | [[ OPT__OUTPUT_TOTAL \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TOTAL ]] | 1 | 0 | 2 | output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] | | [[ OPT__OUTPUT_USER \| Runtime-Parameters:-Outputs#OPT__OUTPUT_USER ]] | 0 | None | None | output the user-specified data -> edit "Output_User.cpp" [0] | | [[ OPT__OUTPUT_USER_FIELD \| Runtime-Parameters:-Outputs#OPT__OUTPUT_USER_FIELD ]] | 0 | None | None | output user-defined derived fields [0] -> edit "Flu_DerivedField_User.cpp" | @@ -341,6 +342,7 @@ For variables with `Default/Min/Max` labeled as `Depend`, click the parameter na | [[ OPT__UM_IC_REFINE \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_REFINE ]] | 1 | None | None | refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] | | [[ OPT__UNIT \| Runtime-Parameters:-Units#OPT__UNIT ]] | 0 | None | None | specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## | | [[ OPT__VERBOSE \| Runtime-Parameters:-Miscellaneous#OPT__VERBOSE ]] | 0 | None | None | output the simulation progress in detail [0] | +| [[ OUTPUT_DIR \| Runtime-Parameters:-Outputs#OUTPUT_DIR ]] | "." | None | None | set the output directory [.] | | [[ OUTPUT_DT \| Runtime-Parameters:-Outputs#OUTPUT_DT ]] | -1.0 | None | None | output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## | | [[ OUTPUT_PART_X \| Runtime-Parameters:-Outputs#OUTPUT_PART_X ]] | -1.0 | None | None | x coordinate for OPT__OUTPUT_PART [-1.0] | | [[ OUTPUT_PART_Y \| Runtime-Parameters:-Outputs#OUTPUT_PART_Y ]] | -1.0 | None | None | y coordinate for OPT__OUTPUT_PART [-1.0] | diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Outputs.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Outputs.md index 618fd65cf2..71dbedb1c9 100644 --- a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Outputs.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Outputs.md @@ -2,6 +2,7 @@ Parameters described on this page: [OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL),   [OPT__OUTPUT_PART](#OPT__OUTPUT_PART),   [OPT__OUTPUT_TEXT_FORMAT_FLT](#OPT__OUTPUT_TEXT_FORMAT_FLT),   +[OPT__OUTPUT_TEXT_LENGTH_INT](#OPT__OUTPUT_TEXT_LENGTH_INT),   [OPT__OUTPUT_USER](#OPT__OUTPUT_USER),   [OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE),   [OPT__OUTPUT_PAR_MESH](#OPT__OUTPUT_PAR_MESH),   @@ -31,6 +32,7 @@ Parameters described on this page: [OUTPUT_PART_Y](#OUTPUT_PART_Y),   [OUTPUT_PART_Z](#OUTPUT_PART_Z),   [INIT_DUMPID](#INIT_DUMPID),   +[OUTPUT_DIR](#OUTPUT_DIR)   Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** @@ -52,9 +54,9 @@ data dump frequency. the HDF5 snapshots of GAMER. -* #### `OPT__OUTPUT_PART`   (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diagonal)   [0] +* #### `OPT__OUTPUT_PART`   (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diagonal, 8=entire box)   [0] * **Description:** -Output the data of a single line or slice in the text format. +Output the data of a single line, slice, or entire box in the text format. Use [OUTPUT_PART_X](#OUTPUT_PART_X), [OUTPUT_PART_Y](#OUTPUT_PART_Y), and [OUTPUT_PART_Z](#OUTPUT_PART_Z) to specify the target coordinates. This output option is mainly for quick inspection for simple test problems @@ -75,6 +77,12 @@ This will affect files generated by, for example, [OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS). * **Restriction:** + +* #### `OPT__OUTPUT_TEXT_LENGTH_INT`   (≥0)   [12] + * **Description:** +String length of integer data in output text files. + * **Restriction:** + * #### `OPT__OUTPUT_USER`   (0=off, 1=on)   [0] * **Description:** @@ -283,6 +291,14 @@ in most cases, even when restarting simulations, unless you want to overwrite the default value. * **Restriction:** + +* #### `OUTPUT_DIR`   (string)   [.] + * **Description:** +Specify the output data directory. In most cases, it is unnecessary to set this value +unless you want to overwrite the default directory. + * **Restriction:** +The string length should be shorter than `MAX_STRING-100`. + ## Remarks diff --git a/example/grackle/Make.mach.eureka-intel b/example/grackle/Make.mach.eureka-intel new file mode 100644 index 0000000000..3a9bf09c4b --- /dev/null +++ b/example/grackle/Make.mach.eureka-intel @@ -0,0 +1,97 @@ +#======================================================================= +# +# FILE: Make.mach.eureka-intel +# +# DESCRIPTION: Makefile for the calab-ntu Eureka GPU cluster with Intel +# compiler and OpenMP support +# +# AUTHOR: Hsi-Yu Schive (modified by Guan-Ming Su, Barry T. Chiang, +# and Chun-Yen Chen) +# +# DATE: April 1, 2016 (August 28, 2024) +#======================================================================= + +MACH_TEXT = Eureka Intel +MACH_VALID = 0 +MACH_FILE = Make.mach.eureka-intel + +#----------------------------------------------------------------------- +# Install paths (local variables) +#----------------------------------------------------------------------- + +LOCAL_HDF5_INSTALL = /software/hdf5/default +LOCAL_FC_INSTALL = /software/intel/oneapi/compiler/default/linux/compiler/lib/intel64 + +#----------------------------------------------------------------------- +# Compiler settings +#----------------------------------------------------------------------- + +MACH_CPP = icpc # C preprocessor command + +# Compilers +MACH_CC_NOMPI = icc # C compiler +MACH_CXX_NOMPI = icpc # C++ compiler +MACH_FC_NOMPI = ifort # Fortran 77 +MACH_F90_NOMPI = ifort # Fortran 90 +MACH_LD_NOMPI = icpc # Linker +MACH_LIBTOOL = libtool + +#----------------------------------------------------------------------- +# Machine-dependent defines +#----------------------------------------------------------------------- + +# Note: When compiling against HDF5 version 1.8 or greater, you need to +# compile HDF5 with --with-default-api-version=v16, or specify with +# -DH5_USE_16_API. + +MACH_DEFINES = -DLINUX -DH5_USE_16_API + +#----------------------------------------------------------------------- +# Compiler flag settings +#----------------------------------------------------------------------- + +MACH_OMPFLAGS = -fopenmp # OpenMP flags +MACH_CPPFLAGS = -P -traditional # C preprocessor flags +MACH_CFLAGS = -mp1 -prec_div -fp_port -align # C compiler flags +MACH_CXXFLAGS = -mp1 -prec_div -fp_port -align # C++ compiler flags +MACH_FFLAGS = # Fortran 77 compiler flags +MACH_F90FLAGS = -mp1 -prec_div -fp_port -align #-save -zero # Fortran 90 compiler flags +MACH_LDFLAGS = #-lifcore -lifport -lpthread -ldl # Linker flags + +#----------------------------------------------------------------------- +# Optimization flags +#----------------------------------------------------------------------- + +MACH_OPT_WARN = # Flags for verbose compiler warnings +MACH_OPT_DEBUG = -g -O0 # Flags for debugging +MACH_OPT_HIGH = -O2 # Flags for high conservative optimization +MACH_OPT_AGGRESSIVE = -O3 #-Mfptrap -Mflushz -fastsse -Mdaz -Mnontemporal -Mnofprelaxed -Mvect=altcode,assoc,prefetch -Kieee # Flags for aggressive optimization + +#----------------------------------------------------------------------- +# Includes +#----------------------------------------------------------------------- + +LOCAL_INCLUDES_HDF5 = -I$(LOCAL_HDF5_INSTALL)/include # HDF5 includes +MACH_INCLUDES = $(LOCAL_INCLUDES_HDF5) + +#----------------------------------------------------------------------- +# Libraries +#----------------------------------------------------------------------- + +LOCAL_LIBS_HDF5 = -L$(LOCAL_HDF5_INSTALL)/lib -lhdf5 # HDF5 libraries +LOCAL_LIBS_MACH = -L$(LOCAL_FC_INSTALL) -lm -lifcore -lifport # Machine-dependent libraries + +MACH_LIBS = $(LOCAL_LIBS_HDF5) $(LOCAL_LIBS_MACH) + +#----------------------------------------------------------------------- +# Installation +#----------------------------------------------------------------------- + +# if $(HOME)/local does not exist, mkdir before `make install` + +### Use this when make omp-on is set +MACH_INSTALL_PREFIX = /grackle_eureka_double_omp +### Use this when make omp-off is set +#MACH_INSTALL_PREFIX = /grackle_eureka_double_no_omp +MACH_INSTALL_LIB_DIR = +MACH_INSTALL_INCLUDE_DIR = diff --git a/example/grackle/Make.mach.spock-intel b/example/grackle/Make.mach.spock-intel new file mode 100644 index 0000000000..0129b59b38 --- /dev/null +++ b/example/grackle/Make.mach.spock-intel @@ -0,0 +1,97 @@ +#======================================================================= +# +# FILE: Make.mach.spock-intel +# +# DESCRIPTION: Makefile for the calab-ntu Spock GPU cluster with Intel +# compiler and OpenMP support +# +# AUTHOR: Hsi-Yu Schive (modified by Guan-Ming Su, Barry T. Chiang, +# and Chun-Yen Chen) +# +# DATE: April 1, 2016 (August 28, 2024) +#======================================================================= + +MACH_TEXT = Spock Intel +MACH_VALID = 0 +MACH_FILE = Make.mach.spock-intel + +#----------------------------------------------------------------------- +# Install paths (local variables) +#----------------------------------------------------------------------- + +LOCAL_HDF5_INSTALL = /software/hdf5/1.10.6-intel-2023.1.0 +LOCAL_FC_INSTALL = /software/intel/oneapi/compiler/latest/linux/compiler/lib/intel64 + +#----------------------------------------------------------------------- +# Compiler settings +#----------------------------------------------------------------------- + +MACH_CPP = icpc # C preprocessor command + +# Compilers +MACH_CC_NOMPI = icc # C compiler +MACH_CXX_NOMPI = icpc # C++ compiler +MACH_FC_NOMPI = ifort # Fortran 77 +MACH_F90_NOMPI = ifort # Fortran 90 +MACH_LD_NOMPI = icpc # Linker +MACH_LIBTOOL = libtool + +#----------------------------------------------------------------------- +# Machine-dependent defines +#----------------------------------------------------------------------- + +# Note: When compiling against HDF5 version 1.8 or greater, you need to +# compile HDF5 with --with-default-api-version=v16, or specify with +# -DH5_USE_16_API. + +MACH_DEFINES = -DLINUX -DH5_USE_16_API + +#----------------------------------------------------------------------- +# Compiler flag settings +#----------------------------------------------------------------------- + +MACH_OMPFLAGS = -fopenmp # OpenMP flags +MACH_CPPFLAGS = -P -traditional # C preprocessor flags +MACH_CFLAGS = -mp1 -prec_div -fp_port -align # C compiler flags +MACH_CXXFLAGS = -mp1 -prec_div -fp_port -align # C++ compiler flags +MACH_FFLAGS = # Fortran 77 compiler flags +MACH_F90FLAGS = -mp1 -prec_div -fp_port -align #-save -zero # Fortran 90 compiler flags +MACH_LDFLAGS = #-lifcore -lifport -lpthread -ldl # Linker flags + +#----------------------------------------------------------------------- +# Optimization flags +#----------------------------------------------------------------------- + +MACH_OPT_WARN = # Flags for verbose compiler warnings +MACH_OPT_DEBUG = -g -O0 # Flags for debugging +MACH_OPT_HIGH = -O2 # Flags for high conservative optimization +MACH_OPT_AGGRESSIVE = -O3 #-Mfptrap -Mflushz -fastsse -Mdaz -Mnontemporal -Mnofprelaxed -Mvect=altcode,assoc,prefetch -Kieee # Flags for aggressive optimization + +#----------------------------------------------------------------------- +# Includes +#----------------------------------------------------------------------- + +LOCAL_INCLUDES_HDF5 = -I$(LOCAL_HDF5_INSTALL)/include # HDF5 includes +MACH_INCLUDES = $(LOCAL_INCLUDES_HDF5) + +#----------------------------------------------------------------------- +# Libraries +#----------------------------------------------------------------------- + +LOCAL_LIBS_HDF5 = -L$(LOCAL_HDF5_INSTALL)/lib -lhdf5 # HDF5 libraries +LOCAL_LIBS_MACH = -L$(LOCAL_FC_INSTALL) -lm -lifcore -lifport # Machine-dependent libraries + +MACH_LIBS = $(LOCAL_LIBS_HDF5) $(LOCAL_LIBS_MACH) + +#----------------------------------------------------------------------- +# Installation +#----------------------------------------------------------------------- + +# if $(HOME)/local does not exist, mkdir before `make install` + +### Use this when make omp-on is set +MACH_INSTALL_PREFIX = /grackle_spock_double_omp +### Use this when make omp-off is set +#MACH_INSTALL_PREFIX = /grackle_spock_double_no_omp +MACH_INSTALL_LIB_DIR = +MACH_INSTALL_INCLUDE_DIR = diff --git a/example/grackle/README b/example/grackle/README new file mode 100644 index 0000000000..bbbad59b4f --- /dev/null +++ b/example/grackle/README @@ -0,0 +1,15 @@ +First-time GRACKLE installation guide (on calab-ntu gpu-clusters as an example): +======================================== +1. First download the source code by executing "git clone https://github.com/grackle-project/grackle" +2. Next navigate to "cd grackle". The required UVB interpolation tables can be downloaded via "git submodule update --init" +3. Next navigate to "./configure; cd src/clib" +4. Copy into the config files "Make.mach.eureka-intel" or "Make.mach.spock-intel" (from the directory "/example/grackle/") and change the prefix: "MACH_INSTALL_PREFIX = /grackle_spock_double_omp" in "Make.mach.spock-intel" to the path you wish to install the package +5. Next execute "make clean; make machine-spock-intel" or "make clean; make machine-eureka-intel" +6. Next execute "make precision-64" (double precision is recommended for GRACKLE) and "make omp-on" (GAMER does utilize OpenMP) +7. Next execute "make show-config" to verify "CONFIG_PRECISION: 64" and "CONFIG_OMP: on" +8. Next execute "make save-config-gamer" (save this GAMER-spock specific config setting) and "make load-config-gamer" (load this GAMER-spock specific config setting) +9. Lastly for code compilation, execute "make -j 4; make install" +10. To compile the corresponding gamer executable: + (1) Add the path "GRACKLE_PATH /grackle_spock_double_omp" to "/configs/spock_intel.config" + (2) Copy "generate_make.sh" from the AGORA test problem and change "--machine=spock_intel" in that file, and then execute "sh generate_make.sh" + (3) Generate a gamer executable via "make clean; make -j 4" diff --git a/example/script/clean.sh b/example/script/clean.sh index dd2cc95324..cc9345ab86 100644 --- a/example/script/clean.sh +++ b/example/script/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Center \ GRACKLE_INFO Record__DivB Record__Hybrid diff --git a/example/test_problem/ELBDM/DiskHeating/Input__Parameter b/example/test_problem/ELBDM/DiskHeating/Input__Parameter index 866e5bd8db..6069125174 100644 --- a/example/test_problem/ELBDM/DiskHeating/Input__Parameter +++ b/example/test_problem/ELBDM/DiskHeating/Input__Parameter @@ -245,8 +245,8 @@ SPEC_INT_GHOST_BOUNDARY 4 # ghost boundary size for spectral int # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] -OPT__OUTPUT_TEXT_FORMAT_FLT %24.16e # string format of output text files [%24.16e] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_TEXT_FORMAT_FLT %24.16e # string format of floating-point variables in output text files [%24.16e] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -276,6 +276,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/DiskHeating/clean.sh b/example/test_problem/ELBDM/DiskHeating/clean.sh index dd2cc95324..cc9345ab86 100644 --- a/example/test_problem/ELBDM/DiskHeating/clean.sh +++ b/example/test_problem/ELBDM/DiskHeating/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Center \ GRACKLE_INFO Record__DivB Record__Hybrid diff --git a/example/test_problem/ELBDM/DiskHeating/download_ic.sh b/example/test_problem/ELBDM/DiskHeating/download_ic.sh index 077cfd9760..fe24da5b58 100644 --- a/example/test_problem/ELBDM/DiskHeating/download_ic.sh +++ b/example/test_problem/ELBDM/DiskHeating/download_ic.sh @@ -1,9 +1,17 @@ -filename=disk-heating-ic +#!/bin/bash -curl https://girder.hub.yt/api/v1/item/6645cffcff473673ea91b24d/download -o ${filename}.tgz -tar -zxvf ${filename}.tgz -rm ${filename}.tgz -ln -s ${filename}/UM_IC_0.4_M7 UM_IC -ln -s ${filename}/PAR_IC_0.4_M7_low_res DiskHeatingParticleIC +LOCAL_FILENAME="disk-heating-ic" +FILE_ID="677dd2d0999605c485c8de8f" +FILE_SHA256="5c981ffe1f0cd85237b51e9e2872e8047dad8a87e0419575255e4c1d5d8cf17a" +# 1 download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}.tgz" +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME}.tgz | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}.tgz" + +# 3. unzip and link +tar -zxvf ${LOCAL_FILENAME}.tgz +rm ${LOCAL_FILENAME}.tgz +ln -s ${LOCAL_FILENAME}/UM_IC_0.4_M7 UM_IC +ln -s ${LOCAL_FILENAME}/PAR_IC_0.4_M7_low_res DiskHeatingParticleIC diff --git a/example/test_problem/ELBDM/DiskHeating/generate_make.sh b/example/test_problem/ELBDM/DiskHeating/generate_make.sh index 10febea161..19d04c42bc 100644 --- a/example/test_problem/ELBDM/DiskHeating/generate_make.sh +++ b/example/test_problem/ELBDM/DiskHeating/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --gravity=true --particle=true --store_par_acc=true \ --gsl=true --max_patch=20000000 "$@" diff --git a/example/test_problem/ELBDM/ExtPot/Input__Parameter b/example/test_problem/ELBDM/ExtPot/Input__Parameter index 0b560c879e..979c4e4b38 100644 --- a/example/test_problem/ELBDM/ExtPot/Input__Parameter +++ b/example/test_problem/ELBDM/ExtPot/Input__Parameter @@ -144,7 +144,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## @@ -156,6 +156,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.5 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/ExtPot/clean.sh b/example/test_problem/ELBDM/ExtPot/clean.sh index fc58a7e965..e0261d4d97 100644 --- a/example/test_problem/ELBDM/ExtPot/clean.sh +++ b/example/test_problem/ELBDM/ExtPot/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/ExtPot/generate_make.sh b/example/test_problem/ELBDM/ExtPot/generate_make.sh index ea1818b24a..fab2dfe0c6 100644 --- a/example/test_problem/ELBDM/ExtPot/generate_make.sh +++ b/example/test_problem/ELBDM/ExtPot/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --gravity=true "$@" diff --git a/example/test_problem/ELBDM/GaussianWavePacket/Input__Parameter b/example/test_problem/ELBDM/GaussianWavePacket/Input__Parameter index 69450297e4..fce1aaaafb 100644 --- a/example/test_problem/ELBDM/GaussianWavePacket/Input__Parameter +++ b/example/test_problem/ELBDM/GaussianWavePacket/Input__Parameter @@ -136,7 +136,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -151,6 +151,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/GaussianWavePacket/clean.sh b/example/test_problem/ELBDM/GaussianWavePacket/clean.sh index 231f044e13..1ed5787641 100644 --- a/example/test_problem/ELBDM/GaussianWavePacket/clean.sh +++ b/example/test_problem/ELBDM/GaussianWavePacket/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/GaussianWavePacket/generate_make.sh b/example/test_problem/ELBDM/GaussianWavePacket/generate_make.sh index 36d72b4969..68b0c3d80b 100644 --- a/example/test_problem/ELBDM/GaussianWavePacket/generate_make.sh +++ b/example/test_problem/ELBDM/GaussianWavePacket/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=ELBDM "$@" +${PYTHON} configure.py --model=ELBDM "$@" diff --git a/example/test_problem/ELBDM/HaloMerger/Input__Parameter b/example/test_problem/ELBDM/HaloMerger/Input__Parameter index b6a81826a5..2b5e8d3aeb 100644 --- a/example/test_problem/ELBDM/HaloMerger/Input__Parameter +++ b/example/test_problem/ELBDM/HaloMerger/Input__Parameter @@ -186,7 +186,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 1 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -201,6 +201,7 @@ OUTPUT_PART_X 0.12938422 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.12938422 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.12938422 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/HaloMerger/clean.sh b/example/test_problem/ELBDM/HaloMerger/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/ELBDM/HaloMerger/clean.sh +++ b/example/test_problem/ELBDM/HaloMerger/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/ELBDM/HaloMerger/download_ic.sh b/example/test_problem/ELBDM/HaloMerger/download_ic.sh index bea2af5a30..24b7398f2a 100644 --- a/example/test_problem/ELBDM/HaloMerger/download_ic.sh +++ b/example/test_problem/ELBDM/HaloMerger/download_ic.sh @@ -1,8 +1,15 @@ -filename=HALO_IC_m22_1_Mh_4e9 -link=https://girder.hub.yt/api/v1/item/65e5251f1613cd89a1dfe902/download +#!/bin/bash +LOCAL_FILENAME="HALO_IC_m22_1_Mh_4e9" +FILE_ID="677cc8db999605c485c8de83" +FILE_SHA256="acbd85842de65ff2360c7f3a1d1101c6f4f8939f430c3f61b8bc5f6f9a72fe94" -curl ${link} -o ${filename} +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" -ln -s ${filename} HALO_IC_Halo1 -ln -s ${filename} HALO_IC_Halo2 +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 3. link +ln -s ${LOCAL_FILENAME} HALO_IC_Halo1 +ln -s ${LOCAL_FILENAME} HALO_IC_Halo2 diff --git a/example/test_problem/ELBDM/HaloMerger/generate_make.sh b/example/test_problem/ELBDM/HaloMerger/generate_make.sh index b7c2d9fa1a..3e16ee04f2 100644 --- a/example/test_problem/ELBDM/HaloMerger/generate_make.sh +++ b/example/test_problem/ELBDM/HaloMerger/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --gravity=true --particle=true --gsl=true "$@" diff --git a/example/test_problem/ELBDM/IsolatedHalo/Input__Parameter b/example/test_problem/ELBDM/IsolatedHalo/Input__Parameter index d42b2e7d9c..6a573c0a8d 100644 --- a/example/test_problem/ELBDM/IsolatedHalo/Input__Parameter +++ b/example/test_problem/ELBDM/IsolatedHalo/Input__Parameter @@ -185,7 +185,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -200,6 +200,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) diff --git a/example/test_problem/ELBDM/IsolatedHalo/clean.sh b/example/test_problem/ELBDM/IsolatedHalo/clean.sh index 65b1d694e6..72cc1fb33f 100644 --- a/example/test_problem/ELBDM/IsolatedHalo/clean.sh +++ b/example/test_problem/ELBDM/IsolatedHalo/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/IsolatedHalo/download_ic.sh b/example/test_problem/ELBDM/IsolatedHalo/download_ic.sh index 3ed46f02dd..c417b94e6c 100644 --- a/example/test_problem/ELBDM/IsolatedHalo/download_ic.sh +++ b/example/test_problem/ELBDM/IsolatedHalo/download_ic.sh @@ -1,8 +1,16 @@ -filename=UM_IC_run05-halo08-lv4 -link=https://use.yt/upload/d75aa595 +#!/bin/bash -curl -L ${link} -o ${filename}.tgz -tar -zxvf ${filename}.tgz -rm ${filename}.tgz +LOCAL_FILENAME="UM_IC_run05-halo08-lv4" +FILE_ID="677cbad6999605c485c8de77" +FILE_SHA256="7ed91ba48a9aec139e0574629b689090ae43496fb957c6822c7ec1bd1217e22e" -ln -s ${filename} UM_IC +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}.tgz" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME}.tgz | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}.tgz" + +# 3. unzip and link +tar -zxvf ${LOCAL_FILENAME}.tgz +rm ${LOCAL_FILENAME}.tgz +ln -s ${LOCAL_FILENAME} UM_IC diff --git a/example/test_problem/ELBDM/IsolatedHalo/generate_make.sh b/example/test_problem/ELBDM/IsolatedHalo/generate_make.sh index ea1818b24a..fab2dfe0c6 100644 --- a/example/test_problem/ELBDM/IsolatedHalo/generate_make.sh +++ b/example/test_problem/ELBDM/IsolatedHalo/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --gravity=true "$@" diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/Input__Parameter b/example/test_problem/ELBDM/JeansInstabilityComoving/Input__Parameter index fe16a22754..64ca5be5f2 100644 --- a/example/test_problem/ELBDM/JeansInstabilityComoving/Input__Parameter +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/Input__Parameter @@ -159,7 +159,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -171,6 +171,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/clean.sh b/example/test_problem/ELBDM/JeansInstabilityComoving/clean.sh index 345acbb05a..ae41070615 100644 --- a/example/test_problem/ELBDM/JeansInstabilityComoving/clean.sh +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/generate_make.sh b/example/test_problem/ELBDM/JeansInstabilityComoving/generate_make.sh index 29f50a3115..8d1303f304 100644 --- a/example/test_problem/ELBDM/JeansInstabilityComoving/generate_make.sh +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --fftw=FFTW3 --double=true \ +${PYTHON} configure.py --hdf5=true --gpu=true --fftw=FFTW3 --double=true \ --model=ELBDM --gravity=true --comoving=true "$@" diff --git a/example/test_problem/ELBDM/LSS/Input__Parameter b/example/test_problem/ELBDM/LSS/Input__Parameter index c4f3732b83..1c4a252d3d 100644 --- a/example/test_problem/ELBDM/LSS/Input__Parameter +++ b/example/test_problem/ELBDM/LSS/Input__Parameter @@ -171,7 +171,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 1 # output the base-level power spectrum [0] @@ -186,6 +186,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/LSS/clean.sh b/example/test_problem/ELBDM/LSS/clean.sh index 65b1d694e6..72cc1fb33f 100644 --- a/example/test_problem/ELBDM/LSS/clean.sh +++ b/example/test_problem/ELBDM/LSS/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/LSS/download_ic.sh b/example/test_problem/ELBDM/LSS/download_ic.sh index b27e678417..fa6c23f98d 100644 --- a/example/test_problem/ELBDM/LSS/download_ic.sh +++ b/example/test_problem/ELBDM/LSS/download_ic.sh @@ -1,5 +1,14 @@ -filename=Music_InitCondition_z3200_L1.4_N0256_s1002 -link=https://use.yt/upload/4dec54c9 +#!/bin/bash -curl -L ${link} -o ${filename} -ln -s ${filename} UM_IC +LOCAL_FILENAME="Music_InitCondition_z3200_L1.4_N0256_s1002" +FILE_ID="6780d8d6999605c485c8dea0" +FILE_SHA256="114fd2a0d37e70ba7bd06907c878bd1c752ea76882ad1833af165696eef8cf9d" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 3. link +ln -s ${LOCAL_FILENAME} UM_IC diff --git a/example/test_problem/ELBDM/LSS/generate_make.sh b/example/test_problem/ELBDM/LSS/generate_make.sh index 3d3c4e9786..2a102095a1 100644 --- a/example/test_problem/ELBDM/LSS/generate_make.sh +++ b/example/test_problem/ELBDM/LSS/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --gravity=true --comoving=true "$@" diff --git a/example/test_problem/ELBDM/LSS_Hybrid/Input__Parameter b/example/test_problem/ELBDM/LSS_Hybrid/Input__Parameter index ca04a71d29..8bcd29b50e 100644 --- a/example/test_problem/ELBDM/LSS_Hybrid/Input__Parameter +++ b/example/test_problem/ELBDM/LSS_Hybrid/Input__Parameter @@ -182,7 +182,7 @@ SPEC_INT_GHOST_BOUNDARY 4 # ghost boundary size for spectral int # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 1 # output the base-level power spectrum [0] @@ -197,6 +197,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/LSS_Hybrid/clean.sh b/example/test_problem/ELBDM/LSS_Hybrid/clean.sh index 65b1d694e6..72cc1fb33f 100644 --- a/example/test_problem/ELBDM/LSS_Hybrid/clean.sh +++ b/example/test_problem/ELBDM/LSS_Hybrid/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/LSS_Hybrid/download_heavy_halo_ic.sh b/example/test_problem/ELBDM/LSS_Hybrid/download_heavy_halo_ic.sh index 8d03ee68cf..cdf8f8557f 100644 --- a/example/test_problem/ELBDM/LSS_Hybrid/download_heavy_halo_ic.sh +++ b/example/test_problem/ELBDM/LSS_Hybrid/download_heavy_halo_ic.sh @@ -1,7 +1,16 @@ -filename=Music_InitCondition_z99_L2.8_N0256_HeavyHalo -link=https://use.yt/upload/4587e2e6 +#!/bin/bash -curl -L ${link} -o ${filename} -ln -sf ${filename} UM_IC_wave_heavy +LOCAL_FILENAME="Music_InitCondition_z100_L2.8_N0256_HeavyHalo" +FILE_ID="6780d9d2999605c485c8dea9" +FILE_SHA256="2f15920763e6189abd81b6f39fd283ebeeb6b6b90dbbce0eb898d098ef4b497d" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 3. link +ln -sf ${LOCAL_FILENAME} UM_IC_wave_heavy python3 elbdm_wave_to_hybrid_IC.py -input UM_IC_wave_heavy -output UM_IC_hybrid_heavy -resolution 256 ln -sf UM_IC_hybrid_heavy UM_IC diff --git a/example/test_problem/ELBDM/LSS_Hybrid/download_light_halo_ic.sh b/example/test_problem/ELBDM/LSS_Hybrid/download_light_halo_ic.sh index ca91549205..0143dd78d6 100644 --- a/example/test_problem/ELBDM/LSS_Hybrid/download_light_halo_ic.sh +++ b/example/test_problem/ELBDM/LSS_Hybrid/download_light_halo_ic.sh @@ -1,9 +1,20 @@ -filename=Music_InitCondition_z99_L2.8_N0064_LightHalo -link=https://use.yt/upload/a67d8dd1 +#!/bin/bash +LOCAL_FILENAME="Music_InitCondition_z100_L2.8_N0064_LightHalo" +FILE_ID="6780d97e999605c485c8dea6" +FILE_SHA256="89e1626405e38e3bd756167e3c06719f193456aa8e7d210ddfd13246df0e1a91" + +# 1. clean rm UM_IC* -curl -L ${link} -o ${filename} -python3 elbdm_rescale_periodic_IC.py -input ${filename} -output Music_InitCondition_z99_L2.8_N0256_LightHalo -n_in 64 -n_out 256 -ln -sf Music_InitCondition_z99_L2.8_N0256_LightHalo UM_IC_wave_light + +# 2. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 3. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 4. link +python3 elbdm_rescale_periodic_IC.py -input ${LOCAL_FILENAME} -output Music_InitCondition_z100_L2.8_N0256_LightHalo -n_in 64 -n_out 256 +ln -sf Music_InitCondition_z100_L2.8_N0256_LightHalo UM_IC_wave_light python3 elbdm_wave_to_hybrid_IC.py -input UM_IC_wave_light -output UM_IC_hybrid_light -resolution 256 ln -sf UM_IC_hybrid_light UM_IC diff --git a/example/test_problem/ELBDM/LSS_Hybrid/download_spectral_interpolation_tables.sh b/example/test_problem/ELBDM/LSS_Hybrid/download_spectral_interpolation_tables.sh index 211c7a4470..cc4b930d41 100644 --- a/example/test_problem/ELBDM/LSS_Hybrid/download_spectral_interpolation_tables.sh +++ b/example/test_problem/ELBDM/LSS_Hybrid/download_spectral_interpolation_tables.sh @@ -1,6 +1,18 @@ -filename=spectral_tables.zip -link=https://use.yt/upload/66f39405 +#!/bin/bash +LOCAL_FILENAME="spectral_tables.zip" +FILE_ID="6780d950999605c485c8dea3" +FILE_SHA256="304fb4d098d6ad6f6533f137fc78a4d05d2abf7c239392be29f694503410247f" + +# 1. clean rm -r spectral_tables* -curl -L ${link} -o ${filename} -unzip ${filename} + +# 2. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 3. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 4. unzip +unzip ${LOCAL_FILENAME} +rm ${LOCAL_FILENAME} diff --git a/example/test_problem/ELBDM/LSS_Hybrid/generate_make.sh b/example/test_problem/ELBDM/LSS_Hybrid/generate_make.sh index 50a8a69744..81c9fba21b 100644 --- a/example/test_problem/ELBDM/LSS_Hybrid/generate_make.sh +++ b/example/test_problem/ELBDM/LSS_Hybrid/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --wave_scheme=WAVE_GRAMFE --gramfe_scheme=GRAMFE_MATMUL \ --gravity=true --comoving=true --gsl=true --spectral_interpolation=true "$@" diff --git a/example/test_problem/ELBDM/Perturbation/Input__Parameter b/example/test_problem/ELBDM/Perturbation/Input__Parameter index 5bc450b35c..b57f4b133d 100644 --- a/example/test_problem/ELBDM/Perturbation/Input__Parameter +++ b/example/test_problem/ELBDM/Perturbation/Input__Parameter @@ -175,7 +175,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -190,6 +190,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous OPT__VERBOSE 0 # output the simulation progress in detail [0] diff --git a/example/test_problem/ELBDM/Perturbation/Input__Parameter_BaseSpectral b/example/test_problem/ELBDM/Perturbation/Input__Parameter_BaseSpectral index a0209301f7..b4043c7c6a 100644 --- a/example/test_problem/ELBDM/Perturbation/Input__Parameter_BaseSpectral +++ b/example/test_problem/ELBDM/Perturbation/Input__Parameter_BaseSpectral @@ -175,7 +175,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] diff --git a/example/test_problem/ELBDM/Perturbation/clean.sh b/example/test_problem/ELBDM/Perturbation/clean.sh index 716676c079..7d723b7e5a 100644 --- a/example/test_problem/ELBDM/Perturbation/clean.sh +++ b/example/test_problem/ELBDM/Perturbation/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/Perturbation/generate_make.sh b/example/test_problem/ELBDM/Perturbation/generate_make.sh index fd8e2b6300..382fd3e78a 100644 --- a/example/test_problem/ELBDM/Perturbation/generate_make.sh +++ b/example/test_problem/ELBDM/Perturbation/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --wave_scheme=WAVE_GRAMFE --gramfe_scheme=GRAMFE_MATMUL \ --gravity=true --comoving=false --gsl=true --spectral_interpolation=true "$@" diff --git a/example/test_problem/ELBDM/Perturbation/generate_make_BaseSpectral.sh b/example/test_problem/ELBDM/Perturbation/generate_make_BaseSpectral.sh index 5ac98961d2..18f8a3ea65 100644 --- a/example/test_problem/ELBDM/Perturbation/generate_make_BaseSpectral.sh +++ b/example/test_problem/ELBDM/Perturbation/generate_make_BaseSpectral.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 \ --model=ELBDM --elbdm_scheme=ELBDM_WAVE \ --gravity=true --comoving=false \ No newline at end of file diff --git a/example/test_problem/ELBDM/PlaneWave/Input__Parameter b/example/test_problem/ELBDM/PlaneWave/Input__Parameter index ca768ecb72..d2f4fbc80c 100644 --- a/example/test_problem/ELBDM/PlaneWave/Input__Parameter +++ b/example/test_problem/ELBDM/PlaneWave/Input__Parameter @@ -136,7 +136,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -151,6 +151,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.5 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/PlaneWave/clean.sh b/example/test_problem/ELBDM/PlaneWave/clean.sh index 7d88bca72e..852a524f5d 100644 --- a/example/test_problem/ELBDM/PlaneWave/clean.sh +++ b/example/test_problem/ELBDM/PlaneWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/PlaneWave/generate_make.sh b/example/test_problem/ELBDM/PlaneWave/generate_make.sh index 269c26b977..7ab268371e 100644 --- a/example/test_problem/ELBDM/PlaneWave/generate_make.sh +++ b/example/test_problem/ELBDM/PlaneWave/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=ELBDM --double=True --passive=1 "$@" +${PYTHON} configure.py --model=ELBDM --double=True --passive=1 "$@" diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_NoRefinement b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_NoRefinement index 93854be3aa..c469114071 100644 --- a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_NoRefinement +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_NoRefinement @@ -138,7 +138,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOff b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOff index c7f106ab60..dbc9b30f7d 100644 --- a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOff +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOff @@ -138,7 +138,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOn b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOn index db6367d0a5..1678a5946f 100644 --- a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOn +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOn @@ -138,7 +138,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOnLongRun b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOnLongRun index cbe905a010..3f077bb214 100644 --- a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOnLongRun +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOnLongRun @@ -138,7 +138,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/clean.sh b/example/test_problem/ELBDM/RestrictionMismatch/clean.sh index 65b1d694e6..72cc1fb33f 100644 --- a/example/test_problem/ELBDM/RestrictionMismatch/clean.sh +++ b/example/test_problem/ELBDM/RestrictionMismatch/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/RestrictionMismatch/generate_make.sh b/example/test_problem/ELBDM/RestrictionMismatch/generate_make.sh index 34da26ce5c..45dc152737 100644 --- a/example/test_problem/ELBDM/RestrictionMismatch/generate_make.sh +++ b/example/test_problem/ELBDM/RestrictionMismatch/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=ELBDM --double=True --hdf5=true --fftw=FFTW3 "$@" +${PYTHON} configure.py --model=ELBDM --double=True --hdf5=true --fftw=FFTW3 "$@" diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/Input__Parameter b/example/test_problem/ELBDM/SelfSimilarHalo/Input__Parameter index f4228edfed..81f858daca 100644 --- a/example/test_problem/ELBDM/SelfSimilarHalo/Input__Parameter +++ b/example/test_problem/ELBDM/SelfSimilarHalo/Input__Parameter @@ -151,7 +151,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -165,6 +165,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/clean.sh b/example/test_problem/ELBDM/SelfSimilarHalo/clean.sh index 65b1d694e6..72cc1fb33f 100644 --- a/example/test_problem/ELBDM/SelfSimilarHalo/clean.sh +++ b/example/test_problem/ELBDM/SelfSimilarHalo/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/generate_make.sh b/example/test_problem/ELBDM/SelfSimilarHalo/generate_make.sh index 3d3c4e9786..2a102095a1 100644 --- a/example/test_problem/ELBDM/SelfSimilarHalo/generate_make.sh +++ b/example/test_problem/ELBDM/SelfSimilarHalo/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --gravity=true --comoving=true "$@" diff --git a/example/test_problem/ELBDM/Soliton/Input__Parameter b/example/test_problem/ELBDM/Soliton/Input__Parameter index 14658c9257..da0c0ff967 100644 --- a/example/test_problem/ELBDM/Soliton/Input__Parameter +++ b/example/test_problem/ELBDM/Soliton/Input__Parameter @@ -153,7 +153,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -165,6 +165,7 @@ OUTPUT_PART_X 192.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 192.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 192.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/Soliton/clean.sh b/example/test_problem/ELBDM/Soliton/clean.sh index 65b1d694e6..72cc1fb33f 100644 --- a/example/test_problem/ELBDM/Soliton/clean.sh +++ b/example/test_problem/ELBDM/Soliton/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/Soliton/generate_make.sh b/example/test_problem/ELBDM/Soliton/generate_make.sh index ea1818b24a..fab2dfe0c6 100644 --- a/example/test_problem/ELBDM/Soliton/generate_make.sh +++ b/example/test_problem/ELBDM/Soliton/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=ELBDM --gravity=true "$@" diff --git a/example/test_problem/ELBDM/VortexPairLinear/Input__Parameter b/example/test_problem/ELBDM/VortexPairLinear/Input__Parameter index 06654c88ad..1b84f3baff 100644 --- a/example/test_problem/ELBDM/VortexPairLinear/Input__Parameter +++ b/example/test_problem/ELBDM/VortexPairLinear/Input__Parameter @@ -133,7 +133,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 @@ -143,6 +143,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/VortexPairLinear/clean.sh b/example/test_problem/ELBDM/VortexPairLinear/clean.sh index b5ee263945..72598c6d81 100644 --- a/example/test_problem/ELBDM/VortexPairLinear/clean.sh +++ b/example/test_problem/ELBDM/VortexPairLinear/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/VortexPairLinear/generate_make.sh b/example/test_problem/ELBDM/VortexPairLinear/generate_make.sh index 896d289303..2247fa2c3c 100644 --- a/example/test_problem/ELBDM/VortexPairLinear/generate_make.sh +++ b/example/test_problem/ELBDM/VortexPairLinear/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=ELBDM --hdf5=true "$@" +${PYTHON} configure.py --model=ELBDM --hdf5=true "$@" diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Parameter b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Parameter index 2fe42309ae..858464569c 100644 --- a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Parameter +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Parameter @@ -140,7 +140,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 @@ -150,6 +150,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/clean.sh b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/clean.sh index b5ee263945..72598c6d81 100644 --- a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/clean.sh +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/generate_make.sh b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/generate_make.sh index c50f009d30..c4f3150c8f 100644 --- a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/generate_make.sh +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --hdf5=true --mpi=true "$@" +${PYTHON} configure.py --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --hdf5=true --mpi=true "$@" diff --git a/example/test_problem/ELBDM/VortexPairRotating/Input__Parameter b/example/test_problem/ELBDM/VortexPairRotating/Input__Parameter index 0afea2f99b..0ec78cb919 100644 --- a/example/test_problem/ELBDM/VortexPairRotating/Input__Parameter +++ b/example/test_problem/ELBDM/VortexPairRotating/Input__Parameter @@ -133,7 +133,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 @@ -143,6 +143,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/VortexPairRotating/clean.sh b/example/test_problem/ELBDM/VortexPairRotating/clean.sh index 14d9ffd0c9..2670872215 100644 --- a/example/test_problem/ELBDM/VortexPairRotating/clean.sh +++ b/example/test_problem/ELBDM/VortexPairRotating/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/VortexPairRotating/generate_make.sh b/example/test_problem/ELBDM/VortexPairRotating/generate_make.sh index 896d289303..2247fa2c3c 100644 --- a/example/test_problem/ELBDM/VortexPairRotating/generate_make.sh +++ b/example/test_problem/ELBDM/VortexPairRotating/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=ELBDM --hdf5=true "$@" +${PYTHON} configure.py --model=ELBDM --hdf5=true "$@" diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Parameter b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Parameter index 34402dfd7b..e9b5dbeea3 100644 --- a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Parameter +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Parameter @@ -140,7 +140,7 @@ SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpol # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 @@ -150,6 +150,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/clean.sh b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/clean.sh index 14d9ffd0c9..2670872215 100644 --- a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/clean.sh +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/generate_make.sh b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/generate_make.sh index c50f009d30..c4f3150c8f 100644 --- a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/generate_make.sh +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --hdf5=true --mpi=true "$@" +${PYTHON} configure.py --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --hdf5=true --mpi=true "$@" diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.high-res b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.high-res new file mode 100644 index 0000000000..1e38f0cd61 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.high-res @@ -0,0 +1,13 @@ +# Level Jeans_length/cell_size + 0 64.0 + 1 64.0 + 2 64.0 + 3 64.0 + 4 64.0 + 5 64.0 + 6 64.0 + 7 64.0 + 8 64.0 + 9 64.0 + 10 64.0 + 11 64.0 diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_Jeans b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.low-res similarity index 100% rename from example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_Jeans rename to example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.low-res diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.high-res b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.high-res new file mode 100644 index 0000000000..705a5d3102 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.high-res @@ -0,0 +1,13 @@ +# Level Total_particle_mass_per_cell + 0 1.0035496e-3 + 1 1.0035496e-3 + 2 1.0035496e-3 + 3 1.0035496e-3 + 4 1.0035496e-3 + 5 1.0035496e-3 + 6 1.0035496e-3 + 7 1.0035496e-3 + 8 1.0035496e-3 + 9 1.0035496e-3 + 10 1.0035496e-3 + 11 1.0035496e-3 diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_ParMassCell b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.low-res similarity index 100% rename from example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_ParMassCell rename to example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.low-res diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.high-res b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.high-res new file mode 100644 index 0000000000..2e89dbee6c --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.high-res @@ -0,0 +1,12 @@ +# Level Density + 0 3.125751391053200e-10 + 1 2.500601112842560e-09 + 2 2.000480890274048e-08 + 3 1.600384712219238e-07 + 4 1.280307769775391e-06 + 5 1.024246215820313e-05 + 6 8.193969726562500e-05 + 7 6.555175781250000e-04 + 8 5.244140625000000e-03 + 9 4.195312500000000e-02 + 10 3.356250000000000e-01 diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_Rho b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.low-res similarity index 100% rename from example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_Rho rename to example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.low-res diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.high-res b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.high-res new file mode 100644 index 0000000000..40ea1be1a9 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.high-res @@ -0,0 +1,263 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.31072e3 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 128 # number of base-level cells along x +NX0_TOT_Y 128 # number of base-level cells along y +NX0_TOT_Z 128 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 5 # test problem ID [0] + # 0: none + # 1: HYDRO blast wave + # 2: HYDRO acoustic wave + # 3: HYDRO Bondi accretion (+GRAVITY) + # 4: HYDRO cluster merger vs. Flash (+GRAVITY) + # 5: HYDRO AGORA isolated galaxy (+GRAVITY) + # 1000: ELBDM external potential (+GRAVITY) + + +# code units (in cgs) +OPT__UNIT 1 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L 3.08567758149e21 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M 1.9885e42 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T 3.15569252e13 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V -1.0 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D -1.0 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 2 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_XP 2 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_YM 2 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_YP 2 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_ZM 2 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_ZP 2 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_POT 2 # gravity boundary condition: (1=periodic, 2=isolated) + + +# particle (PARTICLE only) +PAR_NPAR 21250000 # total number of particles (must be set for PAR_INIT == 1/3) +PAR_INIT 1 # initialization option for particles: (1=FUNCTION, 2=RESTART, 3=FILE->"PAR_IC") +PAR_INTERP 2 # particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [2] +PAR_INTEG 2 # particle integration scheme: (1=Euler, 2=KDK) [2] +PAR_IMPROVE_ACC 1 # improve force accuracy at patch boundaries [1] ##STORE_POT_GHOST and PAR_INTERP=2/3 ONLY## +PAR_PREDICT_POS 1 # predict particle position during mass assignment [1] +PAR_REMOVE_CELL -1.0 # remove particles X-root-cells from the boundaries (non-periodic BC only; <0=auto) [-1.0] + + +# time-step +DT__FLUID 0.5 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY 0.35355 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.0 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__SYNC_PARENT_LV 0.05 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] +AUTO_REDUCE_MINMOD_FACTOR 0.8 # reduce MINMOD_COEFF by this factor together with AUTO_REDUCE_DT (1.0=off) [0.8] ##HYDRO ONLY## +AUTO_REDUCE_MINMOD_MIN 1.0e-2 # minimum allowed MINMOD_COEFF after consecutive failures [1.0e-2] ##HYDRO ONLY## +AUTO_REDUCE_INT_MONO_FACTOR 0.8 # reduce INT_MONO_COEFF(_B) by this factor together with AUTO_REDUCE_DT (1.0=off) [0.8] +AUTO_REDUCE_INT_MONO_MIN 1.0e-2 # minimum allowed INT_MONO_COEFF(_B) after consecutive failures [1.0e-2] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV 2 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 9 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_PRES_GRADIENT 0 # flag: pressure gradient (Input__Flag_PresGradient) [0] ##HYDRO ONLY## +OPT__FLAG_VORTICITY 0 # flag: vorticity (Input__Flag_Vorticity) [0] ##HYDRO ONLY## +OPT__FLAG_JEANS 1 # flag: Jeans length (Input__Flag_Jeans) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_ENGY 0 # flag: Lohner for energy density (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_PRES 0 # flag: Lohner for pressure (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_TEMP 0 # flag: Lohner for temperature (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_ENTR 0 # flag: Lohner for entropy (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 1 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 0 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 1 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# Grackle library for chemistry and radiative cooling (SUPPORT_GRACKLE only) +GRACKLE_ACTIVATE 1 # enable Grackle [1] +GRACKLE_VERBOSE 1 # map to "grackle_verbose" [1] +GRACKLE_COOLING 1 # ... "with_radiative_cooling" [1] +GRACKLE_PRIMORDIAL 0 # ... "primordial_chemistry" (0=Cloudy, 1/2/3=6-/9-/12-species) [0] +GRACKLE_METAL 1 # ... "metal_cooling" (must increase NCOMP_PASSIVE_USER by 1) [0] +GRACKLE_UV 1 # ... "UVbackground" [0] +GRACKLE_CMB_FLOOR 1 # ... "cmb_temperature_floor" [1] +GRACKLE_PE_HEATING 1 # ... "photoelectric_heating" [0] +GRACKLE_PE_HEATING_RATE 8.5e-26 # ... "photoelectric_heating_rate (in erg/cm^3/s)" [8.5e-26] +GRACKLE_CLOUDY_TABLE CloudyData_UVB=HM2012.h5 # "grackle_data_file" +CHE_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Grackle solver (<=0=auto) [-1] + + +# star formation (STAR_FORMATION only) +SF_CREATE_STAR_SCHEME 1 # star formation schemes (0=off, 1=AGORA) [0] +SF_CREATE_STAR_RSEED 123 # random seed [123] +SF_CREATE_STAR_DET_RANDOM -1 # make random numbers deterministic (i.e., independent of OpenMP and MPI, <0=auto) [-1] +SF_CREATE_STAR_MIN_LEVEL -1 # minimum AMR level allowed to form stars (<0=auto -> MAX_LEVEL) [0] +SF_CREATE_STAR_MIN_GAS_DENS 2.0e1 # minimum gas density allowed to form stars (in HI count/cm^3) [1.0e1] +SF_CREATE_STAR_MASS_EFF 1.0e-2 # Gas-to-star mass conversion efficiency [1.0e-2] +SF_CREATE_STAR_MIN_STAR_MASS 2.0e3 # minimum star particle mass for the stochastical star formation (in Msun) [0.0] +SF_CREATE_STAR_MAX_STAR_MFRAC 0.5 # maximum gas mass fraction allowed to convert to stars per substep [0.5] + + +# fluid solver in HYDRO (MODEL==HYDRO only) +GAMMA 1.666667 # ratio of specific heats (i.e., adiabatic index) [5.0/3.0] +MOLECULAR_WEIGHT 0.6 # mean molecular weight -> currently only for post-processing [0.6] +MINMOD_COEFF 1.0 # coefficient of the generalized MinMod limiter (1.0~2.0) [1.5] +MINMOD_MAX_ITER 0 # maximum number of iterations to reduce MINMOD_COEFF when data reconstruction fails (0=off) [0] +OPT__LR_LIMITER -1 # slope limiter of data reconstruction in the MHM/MHM_RP/CTU schemes: + # (-1=auto, 0=none, 1=vanLeer, 2=generalized MinMod, 3=vanAlbada, 4=vanLeer+generalized MinMod, 6=central, 7=Athena) [-1] +OPT__1ST_FLUX_CORR -1 # correct unphysical results (defined by MIN_DENS/PRES) by the 1st-order fluxes: + # (<0=auto, 0=off, 1=3D, 2=3D+1D) [-1] ##MHM/MHM_RP/CTU ONLY## +OPT__1ST_FLUX_CORR_SCHEME -1 # Riemann solver for OPT__1ST_FLUX_CORR (<0=auto, 0=none, 1=Roe, 2=HLLC, 3=HLLE, 4=HLLD) [-1] +DUAL_ENERGY_SWITCH 2.0e-1 # apply dual-energy if E_int/E_kin < DUAL_ENERGY_SWITCH [2.0e-2] ##DUAL_ENERGY ONLY## + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## +MIN_PRES 1.0e-15 # minimum pressure (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +MIN_EINT 1.0e-15 # minimum internal energy (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +MIN_ENTR 0.0 # minimum entropy (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +JEANS_MIN_PRES 1 # minimum pressure estimated from the Jeans length [0] ##HYDRO/MHD and GRAVITY ONLY## +JEANS_MIN_PRES_LEVEL -1 # for JEANS_MIN_PRES; ensure Jeans length is resolved by JEANS_MIN_PRES_NCELL*dh[JEANS_MIN_PRES_LEVEL] + # (<0=auto -> MAX_LEVEL) [-1] +JEANS_MIN_PRES_NCELL 4 # for JEANS_MIN_PRES; see JEANS_MIN_PRES_LEVEL [4] + + +# gravity solvers in all models +NEWTON_G 1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +POT_GPU_NPGROUP -1 # number of patch groups sent into the GPU Poisson solver (<=0=auto) [-1] +OPT__GRA_P5_GRADIENT 0 # 5-points gradient in the Gravity solver (must have GRA/USG_GHOST_SIZE_G>=2) [0] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 256 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar) +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +MONO_MAX_ITER 10 # maximum number of iterations to reduce INT_MONO_COEFF when interpolation fails (0=off) [10] + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## +OPT__OUTPUT_TEMP 0 # output gas temperature [0] ##HYDRO ONLY## +OPT__OUTPUT_ENTR 0 # output gas entropy [0] ##HYDRO ONLY## +OPT__OUTPUT_CS 0 # output sound speed [0] ##HYDRO ONLY## +OPT__OUTPUT_DIVVEL 0 # output divergence(velocity) [0] ##HYDRO ONLY## +OPT__OUTPUT_MACH 0 # output mach number [0] ##HYDRO ONLY## +OPT__OUTPUT_DIVMAG 0 # output |divergence(B)*dh/|B|| [0] ##MHD ONLY## +OPT__OUTPUT_LORENTZ 0 # output Lorentz factor [0] ##SRHD ONLY## +OPT__OUTPUT_3VELOCITY 0 # output 3-velocities [0] ##SRHD ONLY## +OPT__OUTPUT_USER_FIELD 0 # output user-defined derived fields [0] -> edit "Flu_DerivedField_User.cpp" +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e1 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 1 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_NEGATIVE 0 # check the negative values: (0=off, 1=density, 2=pressure and entropy, 3=both) [0] ##HYDRO ONLY## +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Parameter b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.low-res similarity index 99% rename from example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Parameter rename to example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.low-res index 6117695cb8..41980091c2 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Parameter +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.low-res @@ -211,7 +211,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## @@ -234,6 +234,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/README b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/README index 835baed863..99589750c1 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/README +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/README @@ -4,7 +4,7 @@ Enable : MODEL=HYDRO, PARTICLE, GRAVITY, DUAL_ENERGY Disable: COMOVING -Default setup: +Simulation setup: ======================================== 1. Units: (1) External (for Input__TestProb only): @@ -12,12 +12,19 @@ Default setup: (2) Internal (for all other input files and internal usage): [L] = kpc - [M] = 1.0e8 Msun + [M] = 1.0e9 Msun [T] = Myr -->[V] = [L]/[T] ~ 9.8e2 km/s -->[D] = [M]/[D]^3 ~ 6.8e-23 g/cm^3 -2. Default resolution ~ 80 pc (MAX_LEVEL = 7) +2. Low-resolution default setup + (1) Download the low-resolution initial conditions and Input_* by executing "sh download_ic_low_res.sh" + (2) Default resolution ~ 80 pc (root grid 128^3; MAX_LEVEL = 7) + +3. High-resolution setup + (1) Download the high-resolution initial conditions and Input_* by executing "sh download_ic_high_res.sh" + (2) Highest resolution ~ 20 pc (root grid 128^3; MAX_LEVEL = 9) + (3) This setup reproduces the AGORA high-resolution run presented in the GAMER-2 paper (Schive et al. 2018) Note: @@ -27,10 +34,16 @@ Note: Ji-hoon Kim, et al., 2016, ApJ, 833, 202 (arXiv: 1610.03066) 2. Other references: AGORA website : https://sites.google.com/site/santacruzcomparisonproject/ - AGORA initial condition : https://goo.gl/8JzbIJ + AGORA initial conditions: https://goo.gl/8JzbIJ Enzo setup : https://bitbucket.org/enzo/enzo-dev/src/19f4a44e06f1c386573dc77b3608ba66b64d93bc/run/Hydro/Hydro-3D/AgoraGalaxy/?at=week-of-code Goldbaum et al. 2016 : https://arxiv.org/abs/1605.00646 yt hub : https://girder.hub.yt/#collection/5736481ddd9119000164acf1 -3. Run the script "download_ic.sh" to download the low-resolution initial condition files for this test - --> It's the same script used in the "AgoraGalaxy" test problem of Enzo + CloudyData_UVB table : https://github.com/grackle-project/grackle_data_files/tree/main/input +3. The low-resolution initial condition files from "sh download_ic_low_res.sh" are the same initial conditions used + in the "AgoraGalaxy" test problem of Enzo 4. Some handy yt analysis scripts are put at "yt_script" + + +First-time GRACKLE installation guide (on NTU clusters as an example): +======================================== +Please refer to the README file at "./example/grackle/" diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/clean.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/clean.sh index 6a330bb25b..c4592d22ca 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/clean.sh +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic.sh deleted file mode 100644 index a2bc16e972..0000000000 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic.sh +++ /dev/null @@ -1,6 +0,0 @@ -wget --no-check-certificate -O ./LOW.tar.gz https://www.dropbox.com/sh/1xzt1rysy9v3a9l/AAAMlJBQG1OQFW4cjhp11Ex6a/LOW.tar.gz?dl=1 -wget https://bitbucket.org/grackle/grackle/raw/default/input/CloudyData_UVB=HM2012.h5 -tar xzvf LOW.tar.gz -mv LOW/*.dat ./ -rmdir LOW -rm LOW.tar.gz diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_high_res.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_high_res.sh new file mode 100644 index 0000000000..ef34aa20d1 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_high_res.sh @@ -0,0 +1,28 @@ +#!/bin/bash +LOCAL_FILENAME1="HI" +LOCAL_FILENAME2="CloudyData_UVB=HM2012.h5" +FILE_ID1="677e4757999605c485c8de92" +FILE_ID2="677ca211999605c485c8de6c" +FILE_SHA256_1="8ab54870656585b280b3085c6aa8d9e62f6969ba05123fc25c9a7549bcdd32a2" +FILE_SHA256_2="8715f1b39e90a7296ec2adcd442fa13a3d45d2ad021c6fa2fae9e4ab7a4700b2" + + +# file download +curl https://hub.yt/api/v1/item/${FILE_ID1}/download -o "${LOCAL_FILENAME1}.tar.gz" +curl https://hub.yt/api/v1/item/${FILE_ID2}/download -o "${LOCAL_FILENAME2}" + +# compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME1}.tar.gz | awk '{print $1}'` = "${FILE_SHA256_1}" ] && echo "File broken: ${LOCAL_FILENAME1}.tar.gz" +! [ `sha256sum ${LOCAL_FILENAME2} | awk '{print $1}'` = "${FILE_SHA256_2}" ] && echo "File broken: ${LOCAL_FILENAME2}" + +# file unzip +tar xzvf ${LOCAL_FILENAME1}.tar.gz +mv ${LOCAL_FILENAME1}/* ./ +rm -rf ${LOCAL_FILENAME1} +rm ${LOCAL_FILENAME1}.tar.gz + +# Input_* soft links +ln -fs ./Input_Options/Input__Flag_Jeans.high-res Input__Flag_Jeans +ln -fs ./Input_Options/Input__Flag_ParMassCell.high-res Input__Flag_ParMassCell +ln -fs ./Input_Options/Input__Flag_Rho.high-res Input__Flag_Rho +ln -fs ./Input_Options/Input__Parameter.high-res Input__Parameter diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_low_res.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_low_res.sh new file mode 100644 index 0000000000..44d3cc0bd7 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_low_res.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +LOCAL_FILENAME1="LOW" +LOCAL_FILENAME2="CloudyData_UVB=HM2012.h5" +FILE_ID1="677ca225999605c485c8de6f" +FILE_ID2="677ca211999605c485c8de6c" +FILE_SHA256_1="8fd18d016f5af665d31d853a394c9089503df225f4c256eb1163c9a7b4e94644" +FILE_SHA256_2="8715f1b39e90a7296ec2adcd442fa13a3d45d2ad021c6fa2fae9e4ab7a4700b2" + +# file download +curl https://hub.yt/api/v1/item/${FILE_ID1}/download -o "${LOCAL_FILENAME1}.tar.gz" +curl https://hub.yt/api/v1/item/${FILE_ID2}/download -o "${LOCAL_FILENAME2}" + +# compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME1}.tar.gz | awk '{print $1}'` = "${FILE_SHA256_1}" ] && echo "File broken: ${LOCAL_FILENAME1}.tar.gz" +! [ `sha256sum ${LOCAL_FILENAME2} | awk '{print $1}'` = "${FILE_SHA256_2}" ] && echo "File broken: ${LOCAL_FILENAME2}" + +# file unzip +tar xzvf ${LOCAL_FILENAME1}.tar.gz +mv ${LOCAL_FILENAME1}/*.dat ./ +rmdir ${LOCAL_FILENAME1} +rm ${LOCAL_FILENAME1}.tar.gz + +# Input_* soft links +ln -fs ./Input_Options/Input__Flag_Jeans.low-res Input__Flag_Jeans +ln -fs ./Input_Options/Input__Flag_ParMassCell.low-res Input__Flag_ParMassCell +ln -fs ./Input_Options/Input__Flag_Rho.low-res Input__Flag_Rho +ln -fs ./Input_Options/Input__Parameter.low-res Input__Parameter diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/generate_make.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/generate_make.sh index 409e0efa24..22c9e42bda 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/generate_make.sh +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true --model=HYDRO \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true --model=HYDRO \ --particle=true --gravity=true --flu_scheme=MHM --flux=HLLC --passive=1 \ --par_attribute_flt=1 --dual=DE_ENPY --star_formation=true --grackle=true "$@" diff --git a/example/test_problem/Hydro/AcousticWave/Input__Parameter b/example/test_problem/Hydro/AcousticWave/Input__Parameter index 29ad3cff03..505e7f5bcd 100644 --- a/example/test_problem/Hydro/AcousticWave/Input__Parameter +++ b/example/test_problem/Hydro/AcousticWave/Input__Parameter @@ -118,7 +118,7 @@ INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initiali # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## OPT__OUTPUT_TEMP 0 # output gas temperature [0 (HD) or 1 (SRHD)] ##HYDRO ONLY## @@ -138,6 +138,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/AcousticWave/clean.sh b/example/test_problem/Hydro/AcousticWave/clean.sh index 58fa7c7783..3db7e429e0 100644 --- a/example/test_problem/Hydro/AcousticWave/clean.sh +++ b/example/test_problem/Hydro/AcousticWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/AcousticWave/generate_make.sh b/example/test_problem/Hydro/AcousticWave/generate_make.sh index 1e1a433d7b..b8fa682b4c 100644 --- a/example/test_problem/Hydro/AcousticWave/generate_make.sh +++ b/example/test_problem/Hydro/AcousticWave/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --double=True "$@" +${PYTHON} configure.py --model=HYDRO --double=True "$@" diff --git a/example/test_problem/Hydro/BlastWave/Input__Parameter b/example/test_problem/Hydro/BlastWave/Input__Parameter index 2e1d2daca9..e134a1e669 100644 --- a/example/test_problem/Hydro/BlastWave/Input__Parameter +++ b/example/test_problem/Hydro/BlastWave/Input__Parameter @@ -149,7 +149,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -172,6 +172,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.5 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/BlastWave/clean.sh b/example/test_problem/Hydro/BlastWave/clean.sh index 93cccb7e03..e171d74471 100644 --- a/example/test_problem/Hydro/BlastWave/clean.sh +++ b/example/test_problem/Hydro/BlastWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/BlastWave/generate_make.sh b/example/test_problem/Hydro/BlastWave/generate_make.sh index a6b02341cb..e6bab92044 100644 --- a/example/test_problem/Hydro/BlastWave/generate_make.sh +++ b/example/test_problem/Hydro/BlastWave/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --hdf5=true "$@" +${PYTHON} configure.py --model=HYDRO --hdf5=true "$@" diff --git a/example/test_problem/Hydro/Bondi/Input__Parameter b/example/test_problem/Hydro/Bondi/Input__Parameter index 53b984899f..eee8876f98 100644 --- a/example/test_problem/Hydro/Bondi/Input__Parameter +++ b/example/test_problem/Hydro/Bondi/Input__Parameter @@ -190,7 +190,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## @@ -211,6 +211,7 @@ OUTPUT_PART_X 3.75 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 3.75 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 3.75 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) diff --git a/example/test_problem/Hydro/Bondi/Input__TestProb b/example/test_problem/Hydro/Bondi/Input__TestProb index 60fce18c23..df4e5c2059 100644 --- a/example/test_problem/Hydro/Bondi/Input__TestProb +++ b/example/test_problem/Hydro/Bondi/Input__TestProb @@ -8,6 +8,8 @@ Bondi_InBC_Rho 1.0e-32 # density inside the void region (in Bondi_InBC_T 1.0e-7 # temperature inside the void region (in keV) Bondi_InBC_NCell 2.0 # number of finest cells (can be a fractional number) for the inner BC Bondi_Soften_NCell 0.0 # number of finest cells (can be a fractional number) for the soften length (<=0.0 -> disable) +Bondi_void 1 # enable the void region [1] +Bondi_dynBH 0 # dynamically increase BH mass [0] Bondi_HSE 0 # enable HSE [0] Bondi_HSE_Mode 1 # initial configuration (1:T=Bondi_T0, 2:rho~1/r, 3:beta model) [1] @@ -22,3 +24,13 @@ Bondi_HSE_TrunD 1.6735328e-24 # see Bondi_HSE_Truncate (in g/cm^3) Bondi_HSE_TrunSmoothR 5.0e-2 # smooth out density within TrunR-SmoothRoff) [-1.0] Bondi_HSE_Pres_NormT 0 # normalize pressure profile such that T(r=Dens_NormR)=Bondi_T0 [0] Bondi_HSE_Beta_Rcore 1.0e-1 # core radius in the beta model (in kpc) + +Bondi_Soliton 0 # add soliton external potential [0] +Bondi_Soliton_m22 1.0 # FDM particle mass in 1e-22 eV/c^2 for Bondi_Soliton [-1.0] +Bondi_Soliton_type 5 # functional form for gradually introducing the soliton potential + # (0:unity, 1:arctan, 2:linear, 3:smooth step function, 4:sigmoid, 5:tanh) [5] +Bondi_Soliton_t 4.0e3 # characteristic time normalized to Bondi_TimeB for adding the soliton potential [-1.0] +Bondi_Soliton_rc -1.0 # soliton radius for Bondi_Soliton (in kpc) + # (<0.0 --> compute from Bondi_Soliton_MassHalo/Redshift using the core-halo relation) [-1.0] +Bondi_Soliton_MassHalo 1.0e11 # halo mass for determining Bondi_Soliton_rc (in Msun) [-1.0] +Bondi_Soliton_Redshift 7.0 # redshift for determining Bondi_Soliton_rc [-1.0] diff --git a/example/test_problem/Hydro/Bondi/clean.sh b/example/test_problem/Hydro/Bondi/clean.sh index 61ec00938b..fc6199b090 100644 --- a/example/test_problem/Hydro/Bondi/clean.sh +++ b/example/test_problem/Hydro/Bondi/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/Bondi/generate_make.sh b/example/test_problem/Hydro/Bondi/generate_make.sh index 4e8ddae896..70de7de3a3 100644 --- a/example/test_problem/Hydro/Bondi/generate_make.sh +++ b/example/test_problem/Hydro/Bondi/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --fftw=FFTW3 \ +${PYTHON} configure.py --hdf5=true --gpu=true --fftw=FFTW3 \ --model=HYDRO --gravity=true --dual=DE_ENPY "$@" diff --git a/example/test_problem/Hydro/Bondi/plot_diagonal.gpt b/example/test_problem/Hydro/Bondi/plot_diagonal.gpt index 54e94c8526..a4872a825f 100644 --- a/example/test_problem/Hydro/Bondi/plot_diagonal.gpt +++ b/example/test_problem/Hydro/Bondi/plot_diagonal.gpt @@ -69,7 +69,7 @@ do for [ID=ID_START:ID_END:ID_DELTA] { set yrange [1.0e-3:2.0e1] plot sprintf( '%s/Diag_%06d', FILE_SIMU, ID ) \ - u (abs($4-CENTER)*3**0.5):16 w p pt 6 lc 6 tit 'Simulation' \ + u (abs($4-CENTER)*3**0.5):17 w p pt 6 lc 6 tit 'Simulation' \ ,FILE_BONDI u 2:7 w l lc -1 tit 'Analytical' @@ -79,7 +79,7 @@ do for [ID=ID_START:ID_END:ID_DELTA] { set yrange [1.0e-2:1.0e3] plot sprintf( '%s/Diag_%06d', FILE_SIMU, ID ) \ - u (abs($4-CENTER)*3**0.5):13 w p pt 6 lc 6 tit 'Simulation' \ + u (abs($4-CENTER)*3**0.5):14 w p pt 6 lc 6 tit 'Simulation' \ ,FILE_BONDI u 2:( ($6/$7)**2.0*$4/GAMMA ) w l lc -1 tit 'Analytical' diff --git a/example/test_problem/Hydro/CDM_LSS/Input__Parameter b/example/test_problem/Hydro/CDM_LSS/Input__Parameter index ac07a13241..5b0398ee72 100644 --- a/example/test_problem/Hydro/CDM_LSS/Input__Parameter +++ b/example/test_problem/Hydro/CDM_LSS/Input__Parameter @@ -201,7 +201,7 @@ INT_MONO_COEFF 2.0 # coefficient for ensuring the interpo # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 1 # output the base-level power spectrum [0] @@ -216,6 +216,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/CDM_LSS/clean.sh b/example/test_problem/Hydro/CDM_LSS/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/CDM_LSS/clean.sh +++ b/example/test_problem/Hydro/CDM_LSS/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/CDM_LSS/download_ic.sh b/example/test_problem/Hydro/CDM_LSS/download_ic.sh index ec3a9b39d3..549b3eb456 100644 --- a/example/test_problem/Hydro/CDM_LSS/download_ic.sh +++ b/example/test_problem/Hydro/CDM_LSS/download_ic.sh @@ -2,13 +2,10 @@ LOCAL_FILENAME="PAR_IC" FILE_ID="677c92db999605c485c8de69" +FILE_SHA256="46e27324953bcd7b4eecaecd395b6cf6ccbf662e65a12c935b3823abd8119be3" -# 1. Download through `curl` +# 1. download curl https://hub.yt/api/v1/item/${FILE_ID}/download -o ${LOCAL_FILENAME} -# 2. download through `girder` -API_URL="https://girder.hub.yt/api/v1" - -# girder-cli --api-url ${API_URL} download --parent-type item ${FILE_ID} temp -# mv temp/${LOCAL_FILENAME} ./ -# rmdir temp +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" diff --git a/example/test_problem/Hydro/CDM_LSS/generate_make.sh b/example/test_problem/Hydro/CDM_LSS/generate_make.sh index b65dd79740..3625c38069 100644 --- a/example/test_problem/Hydro/CDM_LSS/generate_make.sh +++ b/example/test_problem/Hydro/CDM_LSS/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=HYDRO --particle=true --gravity=true --comoving=true "$@" diff --git a/example/test_problem/Hydro/CMZ/Input__Parameter b/example/test_problem/Hydro/CMZ/Input__Parameter index e6f554f78e..d6ff47aa8e 100644 --- a/example/test_problem/Hydro/CMZ/Input__Parameter +++ b/example/test_problem/Hydro/CMZ/Input__Parameter @@ -244,7 +244,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## @@ -268,6 +268,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/CMZ/clean.sh b/example/test_problem/Hydro/CMZ/clean.sh index 93cccb7e03..e171d74471 100644 --- a/example/test_problem/Hydro/CMZ/clean.sh +++ b/example/test_problem/Hydro/CMZ/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/CMZ/generate_make.sh b/example/test_problem/Hydro/CMZ/generate_make.sh index 6c58cd78a9..3da93a0a6b 100644 --- a/example/test_problem/Hydro/CMZ/generate_make.sh +++ b/example/test_problem/Hydro/CMZ/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --fftw=FFTW3 \ +${PYTHON} configure.py --hdf5=true --gpu=true --fftw=FFTW3 \ --model=HYDRO --gravity=true --eos=ISOTHERMAL --barotropic=true \ --flu_scheme=MHM --flux=HLLC --passive=1 --par_attribute_flt=1 "$@" diff --git a/example/test_problem/Hydro/CR_Diffusion/Input__Parameter b/example/test_problem/Hydro/CR_Diffusion/Input__Parameter index 66c2ac9dad..1d4e672346 100644 --- a/example/test_problem/Hydro/CR_Diffusion/Input__Parameter +++ b/example/test_problem/Hydro/CR_Diffusion/Input__Parameter @@ -279,7 +279,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -295,6 +295,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) diff --git a/example/test_problem/Hydro/CR_Diffusion/clean.sh b/example/test_problem/Hydro/CR_Diffusion/clean.sh index 2c2877c664..cc927c5846 100644 --- a/example/test_problem/Hydro/CR_Diffusion/clean.sh +++ b/example/test_problem/Hydro/CR_Diffusion/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB CR_Diffusion* diff --git a/example/test_problem/Hydro/CR_Diffusion/generate_make.sh b/example/test_problem/Hydro/CR_Diffusion/generate_make.sh index 431a9e912e..da6ed33ade 100644 --- a/example/test_problem/Hydro/CR_Diffusion/generate_make.sh +++ b/example/test_problem/Hydro/CR_Diffusion/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --flux=HLLD --mhd=true \ +${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --flux=HLLD --mhd=true \ --cosmic_ray=true --eos=COSMIC_RAY --cr_diffusion=true --hdf5=true "$@" diff --git a/example/test_problem/Hydro/CR_ShockTube/Input__Parameter b/example/test_problem/Hydro/CR_ShockTube/Input__Parameter index 94cabe3720..0360331616 100644 --- a/example/test_problem/Hydro/CR_ShockTube/Input__Parameter +++ b/example/test_problem/Hydro/CR_ShockTube/Input__Parameter @@ -278,7 +278,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -294,6 +294,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) diff --git a/example/test_problem/Hydro/CR_ShockTube/clean.sh b/example/test_problem/Hydro/CR_ShockTube/clean.sh index dcb84a1d4c..14a9350e26 100644 --- a/example/test_problem/Hydro/CR_ShockTube/clean.sh +++ b/example/test_problem/Hydro/CR_ShockTube/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/CR_ShockTube/generate_make.sh b/example/test_problem/Hydro/CR_ShockTube/generate_make.sh index 2b0048bba3..487fba62d0 100644 --- a/example/test_problem/Hydro/CR_ShockTube/generate_make.sh +++ b/example/test_problem/Hydro/CR_ShockTube/generate_make.sh @@ -2,7 +2,7 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --mhd=false --flux=HLLE \ +${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --mhd=false --flux=HLLE \ --cosmic_ray=true --eos=COSMIC_RAY "$@" -#${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --mhd=true --flux=HLLD \ +#${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --mhd=true --flux=HLLD \ # --cosmic_ray=true --eos=COSMIC_RAY "$@" diff --git a/example/test_problem/Hydro/CR_SoundWave/Input__Parameter b/example/test_problem/Hydro/CR_SoundWave/Input__Parameter index 2b9dd797ed..acc884ac52 100644 --- a/example/test_problem/Hydro/CR_SoundWave/Input__Parameter +++ b/example/test_problem/Hydro/CR_SoundWave/Input__Parameter @@ -277,7 +277,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -293,6 +293,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) diff --git a/example/test_problem/Hydro/CR_SoundWave/clean.sh b/example/test_problem/Hydro/CR_SoundWave/clean.sh index 679e0a0fcb..8b9d2d3e39 100644 --- a/example/test_problem/Hydro/CR_SoundWave/clean.sh +++ b/example/test_problem/Hydro/CR_SoundWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB CR_SoundWave* diff --git a/example/test_problem/Hydro/CR_SoundWave/generate_make.sh b/example/test_problem/Hydro/CR_SoundWave/generate_make.sh index 15352871fb..36a09353b4 100644 --- a/example/test_problem/Hydro/CR_SoundWave/generate_make.sh +++ b/example/test_problem/Hydro/CR_SoundWave/generate_make.sh @@ -2,7 +2,7 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --mhd=false --flux=HLLE \ +${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --mhd=false --flux=HLLE \ --double=true --cosmic_ray=true --eos=COSMIC_RAY "$@" -#${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --mhd=true --flux=HLLD \ +#${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --mhd=true --flux=HLLD \ # --double=true --cosmic_ray=true --eos=COSMIC_RAY "$@" diff --git a/example/test_problem/Hydro/Caustic/Input__Parameter b/example/test_problem/Hydro/Caustic/Input__Parameter index 02bf3b1d82..01b609f8b7 100644 --- a/example/test_problem/Hydro/Caustic/Input__Parameter +++ b/example/test_problem/Hydro/Caustic/Input__Parameter @@ -148,7 +148,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -169,6 +169,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Caustic/clean.sh b/example/test_problem/Hydro/Caustic/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/Caustic/clean.sh +++ b/example/test_problem/Hydro/Caustic/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/Caustic/generate_make.sh b/example/test_problem/Hydro/Caustic/generate_make.sh index 1e1a433d7b..b8fa682b4c 100644 --- a/example/test_problem/Hydro/Caustic/generate_make.sh +++ b/example/test_problem/Hydro/Caustic/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --double=True "$@" +${PYTHON} configure.py --model=HYDRO --double=True "$@" diff --git a/example/test_problem/Hydro/ClusterMerger/Input__Parameter b/example/test_problem/Hydro/ClusterMerger/Input__Parameter index 0b59e4cecc..b035e42052 100644 --- a/example/test_problem/Hydro/ClusterMerger/Input__Parameter +++ b/example/test_problem/Hydro/ClusterMerger/Input__Parameter @@ -191,7 +191,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -217,6 +217,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/ClusterMerger/clean.sh b/example/test_problem/Hydro/ClusterMerger/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/ClusterMerger/clean.sh +++ b/example/test_problem/Hydro/ClusterMerger/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/ClusterMerger/download_ic.sh b/example/test_problem/Hydro/ClusterMerger/download_ic.sh index a77f72155e..61bc0635d3 100644 --- a/example/test_problem/Hydro/ClusterMerger/download_ic.sh +++ b/example/test_problem/Hydro/ClusterMerger/download_ic.sh @@ -1,4 +1,15 @@ -filename=gamer_ic_merging_cluster.tgz -curl -L https://use.yt/upload/cceea6c4 -o $filename -tar -zxvf $filename -rm $filename +#!/bin/bash + +LOCAL_FILENAME="gamer_ic_merging_cluster.tgz" +FILE_ID="677caaec999605c485c8de74" +FILE_SHA256="a233a892818504cf15e188bca862e22250bb1f3e09155740e45d272e4ab5f1c1" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 3. unzip +tar -zxvf ${LOCAL_FILENAME} +rm ${LOCAL_FILENAME} diff --git a/example/test_problem/Hydro/ClusterMerger/generate_make.sh b/example/test_problem/Hydro/ClusterMerger/generate_make.sh index d0622ae176..8b00177e62 100644 --- a/example/test_problem/Hydro/ClusterMerger/generate_make.sh +++ b/example/test_problem/Hydro/ClusterMerger/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=HYDRO --particle=true --gravity=true --passive=2 --par_attribute_int=1 "$@" diff --git a/example/test_problem/Hydro/EnergyPowerSpectrum/Input__Parameter b/example/test_problem/Hydro/EnergyPowerSpectrum/Input__Parameter index 7668f00e2c..b305abf9e0 100644 --- a/example/test_problem/Hydro/EnergyPowerSpectrum/Input__Parameter +++ b/example/test_problem/Hydro/EnergyPowerSpectrum/Input__Parameter @@ -116,7 +116,7 @@ INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initiali # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## @@ -136,6 +136,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/EnergyPowerSpectrum/clean.sh b/example/test_problem/Hydro/EnergyPowerSpectrum/clean.sh index b1ebd6f160..8ef0285816 100644 --- a/example/test_problem/Hydro/EnergyPowerSpectrum/clean.sh +++ b/example/test_problem/Hydro/EnergyPowerSpectrum/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/EnergyPowerSpectrum/generate_make.sh b/example/test_problem/Hydro/EnergyPowerSpectrum/generate_make.sh index eddc712680..395fef457a 100644 --- a/example/test_problem/Hydro/EnergyPowerSpectrum/generate_make.sh +++ b/example/test_problem/Hydro/EnergyPowerSpectrum/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --fftw=FFTW3 --model=HYDRO --eos=GAMMA --mpi=true "$@" +${PYTHON} configure.py --fftw=FFTW3 --model=HYDRO --eos=GAMMA --mpi=true "$@" diff --git a/example/test_problem/Hydro/Gravity/Input__Parameter b/example/test_problem/Hydro/Gravity/Input__Parameter index 964bb7f0a0..3dfedacb02 100644 --- a/example/test_problem/Hydro/Gravity/Input__Parameter +++ b/example/test_problem/Hydro/Gravity/Input__Parameter @@ -167,7 +167,7 @@ MONO_MAX_ITER 0 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -189,6 +189,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Gravity/clean.sh b/example/test_problem/Hydro/Gravity/clean.sh index 6fd80fa4d2..386037f7a8 100644 --- a/example/test_problem/Hydro/Gravity/clean.sh +++ b/example/test_problem/Hydro/Gravity/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/Gravity/generate_make.sh b/example/test_problem/Hydro/Gravity/generate_make.sh index f79e63d5ba..7d876d0706 100644 --- a/example/test_problem/Hydro/Gravity/generate_make.sh +++ b/example/test_problem/Hydro/Gravity/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --gpu=true --hdf5=true --fftw=FFTW3 --model=HYDRO --gravity=true "$@" +${PYTHON} configure.py --gpu=true --hdf5=true --fftw=FFTW3 --model=HYDRO --gravity=true "$@" diff --git a/example/test_problem/Hydro/JeansInstability/Input__Parameter b/example/test_problem/Hydro/JeansInstability/Input__Parameter index bfd7ae17b3..b370bc1fc7 100644 --- a/example/test_problem/Hydro/JeansInstability/Input__Parameter +++ b/example/test_problem/Hydro/JeansInstability/Input__Parameter @@ -168,7 +168,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -191,6 +191,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/JeansInstability/clean.sh b/example/test_problem/Hydro/JeansInstability/clean.sh index a05519f4a6..9053a4f127 100644 --- a/example/test_problem/Hydro/JeansInstability/clean.sh +++ b/example/test_problem/Hydro/JeansInstability/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/JeansInstability/generate_make.sh b/example/test_problem/Hydro/JeansInstability/generate_make.sh index 4dcd3dbbd4..fa4ab9ee94 100644 --- a/example/test_problem/Hydro/JeansInstability/generate_make.sh +++ b/example/test_problem/Hydro/JeansInstability/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --gpu=true --fftw=FFTW3 --double=true \ +${PYTHON} configure.py --gpu=true --fftw=FFTW3 --double=true \ --model=HYDRO --gravity=true --eos=GAMMA "$@" diff --git a/example/test_problem/Hydro/Jet/Input__Parameter b/example/test_problem/Hydro/Jet/Input__Parameter index c2fdb33475..0069445cc1 100644 --- a/example/test_problem/Hydro/Jet/Input__Parameter +++ b/example/test_problem/Hydro/Jet/Input__Parameter @@ -171,7 +171,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -193,6 +193,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Jet/clean.sh b/example/test_problem/Hydro/Jet/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/Jet/clean.sh +++ b/example/test_problem/Hydro/Jet/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/Jet/generate_make.sh b/example/test_problem/Hydro/Jet/generate_make.sh index 952e5053dd..3052779d2a 100644 --- a/example/test_problem/Hydro/Jet/generate_make.sh +++ b/example/test_problem/Hydro/Jet/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --mpi=true --fftw=FFTW3 \ +${PYTHON} configure.py --hdf5=true --gpu=true --mpi=true --fftw=FFTW3 \ --model=HYDRO --gravity=true "$@" diff --git a/example/test_problem/Hydro/JetICMWall/Input__Parameter b/example/test_problem/Hydro/JetICMWall/Input__Parameter index ae53449b82..edb95363ed 100644 --- a/example/test_problem/Hydro/JetICMWall/Input__Parameter +++ b/example/test_problem/Hydro/JetICMWall/Input__Parameter @@ -135,7 +135,7 @@ MONO_MAX_ITER 4 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -157,6 +157,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/JetICMWall/clean.sh b/example/test_problem/Hydro/JetICMWall/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/JetICMWall/clean.sh +++ b/example/test_problem/Hydro/JetICMWall/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/JetICMWall/generate_make.sh b/example/test_problem/Hydro/JetICMWall/generate_make.sh index 035f4b5356..89094b3ed3 100644 --- a/example/test_problem/Hydro/JetICMWall/generate_make.sh +++ b/example/test_problem/Hydro/JetICMWall/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --gpu=true --model=HYDRO \ +${PYTHON} configure.py --mpi=true --hdf5=true --gpu=true --model=HYDRO \ --srhd=true --eos=TAUBMATHEWS --flux=HLLC --flu_scheme=MHM \ --passive=4 "$@" diff --git a/example/test_problem/Hydro/KelvinHelmholtzInstability/Input__Parameter b/example/test_problem/Hydro/KelvinHelmholtzInstability/Input__Parameter index c4e8df6f48..9f5981edd0 100644 --- a/example/test_problem/Hydro/KelvinHelmholtzInstability/Input__Parameter +++ b/example/test_problem/Hydro/KelvinHelmholtzInstability/Input__Parameter @@ -144,7 +144,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -166,6 +166,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/KelvinHelmholtzInstability/clean.sh b/example/test_problem/Hydro/KelvinHelmholtzInstability/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/KelvinHelmholtzInstability/clean.sh +++ b/example/test_problem/Hydro/KelvinHelmholtzInstability/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/KelvinHelmholtzInstability/generate_make.sh b/example/test_problem/Hydro/KelvinHelmholtzInstability/generate_make.sh index 12521fa79f..e4dc316bea 100644 --- a/example/test_problem/Hydro/KelvinHelmholtzInstability/generate_make.sh +++ b/example/test_problem/Hydro/KelvinHelmholtzInstability/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --mpi=true --fftw=FFTW3 --model=HYDRO "$@" +${PYTHON} configure.py --hdf5=true --gpu=true --mpi=true --fftw=FFTW3 --model=HYDRO "$@" diff --git a/example/test_problem/Hydro/MHD_ABC/Input__Parameter b/example/test_problem/Hydro/MHD_ABC/Input__Parameter index 2ddb989967..170e6c72e3 100644 --- a/example/test_problem/Hydro/MHD_ABC/Input__Parameter +++ b/example/test_problem/Hydro/MHD_ABC/Input__Parameter @@ -150,7 +150,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## @@ -171,6 +171,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/MHD_ABC/clean.sh b/example/test_problem/Hydro/MHD_ABC/clean.sh index 93cccb7e03..e171d74471 100644 --- a/example/test_problem/Hydro/MHD_ABC/clean.sh +++ b/example/test_problem/Hydro/MHD_ABC/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/MHD_ABC/generate_make.sh b/example/test_problem/Hydro/MHD_ABC/generate_make.sh index 6b066a4162..e6179f90c0 100644 --- a/example/test_problem/Hydro/MHD_ABC/generate_make.sh +++ b/example/test_problem/Hydro/MHD_ABC/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --mpi=true \ +${PYTHON} configure.py --hdf5=true --gpu=true --mpi=true \ --model=HYDRO --mhd=true "$@" diff --git a/example/test_problem/Hydro/MHD_LinearWave/Input__Parameter b/example/test_problem/Hydro/MHD_LinearWave/Input__Parameter index ef9c31407b..23abdc7c7f 100644 --- a/example/test_problem/Hydro/MHD_LinearWave/Input__Parameter +++ b/example/test_problem/Hydro/MHD_LinearWave/Input__Parameter @@ -146,7 +146,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## @@ -164,6 +164,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/MHD_LinearWave/clean.sh b/example/test_problem/Hydro/MHD_LinearWave/clean.sh index 2cfa93183c..f304eb25e0 100644 --- a/example/test_problem/Hydro/MHD_LinearWave/clean.sh +++ b/example/test_problem/Hydro/MHD_LinearWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/MHD_LinearWave/generate_make.sh b/example/test_problem/Hydro/MHD_LinearWave/generate_make.sh index f2e70fa968..751e715fdd 100644 --- a/example/test_problem/Hydro/MHD_LinearWave/generate_make.sh +++ b/example/test_problem/Hydro/MHD_LinearWave/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --double=true --model=HYDRO --mhd=true --eos=GAMMA "$@" +${PYTHON} configure.py --double=true --model=HYDRO --mhd=true --eos=GAMMA "$@" diff --git a/example/test_problem/Hydro/MHD_OrszagTangVortex/Input__Parameter b/example/test_problem/Hydro/MHD_OrszagTangVortex/Input__Parameter index 70c182cc16..c524067066 100644 --- a/example/test_problem/Hydro/MHD_OrszagTangVortex/Input__Parameter +++ b/example/test_problem/Hydro/MHD_OrszagTangVortex/Input__Parameter @@ -150,7 +150,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## @@ -171,6 +171,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/MHD_OrszagTangVortex/clean.sh b/example/test_problem/Hydro/MHD_OrszagTangVortex/clean.sh index 93cccb7e03..e171d74471 100644 --- a/example/test_problem/Hydro/MHD_OrszagTangVortex/clean.sh +++ b/example/test_problem/Hydro/MHD_OrszagTangVortex/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/MHD_OrszagTangVortex/generate_make.sh b/example/test_problem/Hydro/MHD_OrszagTangVortex/generate_make.sh index 6b066a4162..e6179f90c0 100644 --- a/example/test_problem/Hydro/MHD_OrszagTangVortex/generate_make.sh +++ b/example/test_problem/Hydro/MHD_OrszagTangVortex/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --mpi=true \ +${PYTHON} configure.py --hdf5=true --gpu=true --mpi=true \ --model=HYDRO --mhd=true "$@" diff --git a/example/test_problem/Hydro/ParticleEquilibriumIC/Input__Parameter b/example/test_problem/Hydro/ParticleEquilibriumIC/Input__Parameter index 896b05a15a..adf29812cf 100644 --- a/example/test_problem/Hydro/ParticleEquilibriumIC/Input__Parameter +++ b/example/test_problem/Hydro/ParticleEquilibriumIC/Input__Parameter @@ -209,7 +209,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 1 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -224,6 +224,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/ParticleEquilibriumIC/clean.sh b/example/test_problem/Hydro/ParticleEquilibriumIC/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/ParticleEquilibriumIC/clean.sh +++ b/example/test_problem/Hydro/ParticleEquilibriumIC/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/ParticleEquilibriumIC/generate_make.sh b/example/test_problem/Hydro/ParticleEquilibriumIC/generate_make.sh index 7ff336392f..f028629dfc 100644 --- a/example/test_problem/Hydro/ParticleEquilibriumIC/generate_make.sh +++ b/example/test_problem/Hydro/ParticleEquilibriumIC/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true --gsl=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true --gsl=true \ --model=HYDRO --particle=true --gravity=true "$@" diff --git a/example/test_problem/Hydro/ParticleTest/Input__Parameter b/example/test_problem/Hydro/ParticleTest/Input__Parameter index 50f2d5332c..321cce42de 100644 --- a/example/test_problem/Hydro/ParticleTest/Input__Parameter +++ b/example/test_problem/Hydro/ParticleTest/Input__Parameter @@ -185,7 +185,7 @@ INT_MONO_COEFF 2.0 # coefficient for ensuring the interpo # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_PAR_MESH 1 # output the attributes of tracer particles mapped from mesh quantities -> edit "Input__Par_Mesh" [1] ##PARTICLE ONLY## @@ -208,6 +208,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.5 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/ParticleTest/clean.sh b/example/test_problem/Hydro/ParticleTest/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/ParticleTest/clean.sh +++ b/example/test_problem/Hydro/ParticleTest/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/ParticleTest/generate_make.sh b/example/test_problem/Hydro/ParticleTest/generate_make.sh index 40c13d3d6e..fe069d4ace 100644 --- a/example/test_problem/Hydro/ParticleTest/generate_make.sh +++ b/example/test_problem/Hydro/ParticleTest/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=HYDRO --particle=true --tracer=true --gravity=true "$@" diff --git a/example/test_problem/Hydro/Plummer/Input__Parameter b/example/test_problem/Hydro/Plummer/Input__Parameter index d16913e281..c5346a6b8e 100644 --- a/example/test_problem/Hydro/Plummer/Input__Parameter +++ b/example/test_problem/Hydro/Plummer/Input__Parameter @@ -192,7 +192,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 1 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -217,6 +217,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Plummer/clean.sh b/example/test_problem/Hydro/Plummer/clean.sh index 2e46ad0248..aef5e71407 100644 --- a/example/test_problem/Hydro/Plummer/clean.sh +++ b/example/test_problem/Hydro/Plummer/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Center diff --git a/example/test_problem/Hydro/Plummer/generate_make.sh b/example/test_problem/Hydro/Plummer/generate_make.sh index fba86cf573..e022e8b448 100644 --- a/example/test_problem/Hydro/Plummer/generate_make.sh +++ b/example/test_problem/Hydro/Plummer/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=HYDRO --particle=true --gravity=true "$@" diff --git a/example/test_problem/Hydro/Riemann/Input__Parameter b/example/test_problem/Hydro/Riemann/Input__Parameter index 84fe92d1dd..7911b39422 100644 --- a/example/test_problem/Hydro/Riemann/Input__Parameter +++ b/example/test_problem/Hydro/Riemann/Input__Parameter @@ -141,7 +141,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## OPT__OUTPUT_TEMP 0 # output gas temperature [0 (HD) or 1 (SRHD)] ##HYDRO ONLY## @@ -162,6 +162,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Riemann/clean.sh b/example/test_problem/Hydro/Riemann/clean.sh index 1197541bb6..99c54c062b 100644 --- a/example/test_problem/Hydro/Riemann/clean.sh +++ b/example/test_problem/Hydro/Riemann/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/Riemann/generate_make.sh b/example/test_problem/Hydro/Riemann/generate_make.sh index f06567704d..82120dfead 100644 --- a/example/test_problem/Hydro/Riemann/generate_make.sh +++ b/example/test_problem/Hydro/Riemann/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO "$@" +${PYTHON} configure.py --model=HYDRO "$@" diff --git a/example/test_problem/Hydro/Riemann/generate_make_Riemann_SRHD.sh b/example/test_problem/Hydro/Riemann/generate_make_Riemann_SRHD.sh index 3ce51d82d4..1805834732 100644 --- a/example/test_problem/Hydro/Riemann/generate_make_Riemann_SRHD.sh +++ b/example/test_problem/Hydro/Riemann/generate_make_Riemann_SRHD.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --srhd=true --double=true --eos=TAUBMATHEWS --flux=HLLC --flu_scheme=MHM --slope=PLM "$@" +${PYTHON} configure.py --model=HYDRO --srhd=true --double=true --eos=TAUBMATHEWS --flux=HLLC --flu_scheme=MHM --slope=PLM "$@" diff --git a/example/test_problem/Hydro/SphericalCollapse/Input__Parameter b/example/test_problem/Hydro/SphericalCollapse/Input__Parameter index b801acfc6f..0268ae0b97 100644 --- a/example/test_problem/Hydro/SphericalCollapse/Input__Parameter +++ b/example/test_problem/Hydro/SphericalCollapse/Input__Parameter @@ -166,7 +166,7 @@ INIT_SUBSAMPLING_NCELL 4 # perform sub-sampling during initiali # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -188,6 +188,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/SphericalCollapse/clean.sh b/example/test_problem/Hydro/SphericalCollapse/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/SphericalCollapse/clean.sh +++ b/example/test_problem/Hydro/SphericalCollapse/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/SphericalCollapse/generate_make.sh b/example/test_problem/Hydro/SphericalCollapse/generate_make.sh index 5849b640f0..6398a3fe92 100644 --- a/example/test_problem/Hydro/SphericalCollapse/generate_make.sh +++ b/example/test_problem/Hydro/SphericalCollapse/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --model=HYDRO --gravity=true --comoving=true --dual=DE_ENPY "$@" diff --git a/example/test_problem/Hydro/Zeldovich/Input__Parameter b/example/test_problem/Hydro/Zeldovich/Input__Parameter index 56f7878525..5358074506 100644 --- a/example/test_problem/Hydro/Zeldovich/Input__Parameter +++ b/example/test_problem/Hydro/Zeldovich/Input__Parameter @@ -181,7 +181,7 @@ INT_MONO_COEFF 2.0 # coefficient for ensuring the interpo # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -197,6 +197,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Zeldovich/clean.sh b/example/test_problem/Hydro/Zeldovich/clean.sh index 9f5d25f7c4..052fa3dce0 100644 --- a/example/test_problem/Hydro/Zeldovich/clean.sh +++ b/example/test_problem/Hydro/Zeldovich/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* gamer.e* gamer.o* Zeldovich_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/Zeldovich/generate_make.sh b/example/test_problem/Hydro/Zeldovich/generate_make.sh index 0fa500a935..ac3b9a5f8b 100644 --- a/example/test_problem/Hydro/Zeldovich/generate_make.sh +++ b/example/test_problem/Hydro/Zeldovich/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ --gsl=true --double=true --model=HYDRO --gravity=true \ --comoving=true --dual=DE_ENPY --particle=true "$@" diff --git a/example/test_problem/Template/Input__Parameter b/example/test_problem/Template/Input__Parameter index 5f245d1b6f..ad73dfe255 100644 --- a/example/test_problem/Template/Input__Parameter +++ b/example/test_problem/Template/Input__Parameter @@ -378,8 +378,9 @@ SPEC_INT_GHOST_BOUNDARY 4 # ghost boundary size for spectral int # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] -OPT__OUTPUT_TEXT_FORMAT_FLT %24.16e # string format of output text files [%24.16e] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_TEXT_FORMAT_FLT %24.16e # string format of floating-point variables in output text files [%24.16e] +OPT__OUTPUT_TEXT_LENGTH_INT 12 # string length of integer variables in output text files [12] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_PAR_MESH 1 # output the attributes of tracer particles mapped from mesh quantities -> edit "Input__Par_Mesh" [1] ##PARTICLE ONLY## @@ -410,6 +411,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) diff --git a/example/test_problem/Template/clean.sh b/example/test_problem/Template/clean.sh index 3909d21052..aa493a48c9 100644 --- a/example/test_problem/Template/clean.sh +++ b/example/test_problem/Template/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB Record__Center diff --git a/include/Global.h b/include/Global.h index bc08cdaa9e..30beccc53d 100644 --- a/include/Global.h +++ b/include/Global.h @@ -81,10 +81,12 @@ extern bool OPT__OPTIMIZE_AGGRESSIVE, OPT__INIT_GRID_WITH_OMP, OPT__NO_FLA extern bool OPT__RECORD_NOTE, OPT__RECORD_UNPHY, INT_OPP_SIGN_0TH_ORDER; extern bool OPT__INT_FRAC_PASSIVE_LR, OPT__CK_INPUT_FLUID, OPT__SORT_PATCH_BY_LBIDX; extern char OPT__OUTPUT_TEXT_FORMAT_FLT[MAX_STRING]; +extern int OPT__OUTPUT_TEXT_LENGTH_INT; extern int OPT__UM_IC_FLOAT8; extern double COM_CEN_X, COM_CEN_Y, COM_CEN_Z, COM_MAX_R, COM_MIN_RHO, COM_TOLERR_R; extern int COM_MAX_ITER; extern double ANGMOM_ORIGIN_X, ANGMOM_ORIGIN_Y, ANGMOM_ORIGIN_Z; +extern char OUTPUT_DIR[MAX_STRING-100]; extern double FLAG_ANGULAR_CEN_X, FLAG_ANGULAR_CEN_Y, FLAG_ANGULAR_CEN_Z; extern double FLAG_RADIAL_CEN_X, FLAG_RADIAL_CEN_Y, FLAG_RADIAL_CEN_Z; diff --git a/include/HDF5_Typedef.h b/include/HDF5_Typedef.h index 16ea740aee..aa326b00bd 100644 --- a/include/HDF5_Typedef.h +++ b/include/HDF5_Typedef.h @@ -831,6 +831,7 @@ struct InputPara_t int Opt__Output_Step; double Opt__Output_Dt; char *Opt__Output_Text_Format_Flt; + int Opt__Output_Text_Length_Int; double Output_PartX; double Output_PartY; double Output_PartZ; diff --git a/include/Prototype.h b/include/Prototype.h index ac91b4a03d..af1ba95c9b 100644 --- a/include/Prototype.h +++ b/include/Prototype.h @@ -22,6 +22,8 @@ void Aux_Check_Refinement( const int lv, const char *comment ); void Aux_Check_Restrict( const int lv, const char *comment ); void Aux_Error( const char *File, const int Line, const char *Func, const char *Format, ... ); bool Aux_CheckFileExist( const char *FileName ); +bool Aux_CheckFolderExist( const char *FolderName ); +bool Aux_CheckPermission( const char *FileName, const int perms ); void Aux_GetCPUInfo( const char *FileName ); void Aux_GetMemInfo(); void Aux_Message( FILE *Type, const char *Format, ... ); diff --git a/include/RandomNumber.h b/include/RandomNumber.h index 02973cee32..3fdcdfa852 100644 --- a/include/RandomNumber.h +++ b/include/RandomNumber.h @@ -13,6 +13,10 @@ #error : ERROR : unsupported RANDOM_NUMBER !! #endif +#if ( ( defined (__APPLE__) || defined (__MACH__) ) && RANDOM_NUMBER != RNG_CPP11 ) +#error : ERROR : macOS requires RANDOM_NUMBER == RNG_CPP11 !! +#endif + void Aux_Error( const char *File, const int Line, const char *Func, const char *Format, ... ); diff --git a/include/Typedef.h b/include/Typedef.h index c222b20ef2..cd91b4fda2 100644 --- a/include/Typedef.h +++ b/include/Typedef.h @@ -215,7 +215,8 @@ const OptOutputPart_t OUTPUT_X = 4, OUTPUT_Y = 5, OUTPUT_Z = 6, - OUTPUT_DIAG = 7; + OUTPUT_DIAG = 7, + OUTPUT_BOX = 8; // OPT_OUTPUT_PAR_MODE options diff --git a/src/Auxiliary/Aux_CheckFileExist.cpp b/src/Auxiliary/Aux_CheckFileExist.cpp index de3551b56d..a92f549802 100644 --- a/src/Auxiliary/Aux_CheckFileExist.cpp +++ b/src/Auxiliary/Aux_CheckFileExist.cpp @@ -1,5 +1,7 @@ #include "GAMER.h" #include +#include +#include @@ -21,3 +23,67 @@ bool Aux_CheckFileExist( const char *FileName ) return ( stat(FileName,&Buf) == 0 ); } // FUNCTION : Aux_CheckFileExist + + + +//------------------------------------------------------------------------------------------------------- +// Function : Aux_CheckFolderExist +// Description : Check whether or not the target folder exists +// +// Note : Use the "stat" function to query the existence of the target folder +// +// Parameter : FolderName : Name of the target folder +// +// Return : true/false <-> folder exists/not exists +//------------------------------------------------------------------------------------------------------- +bool Aux_CheckFolderExist( const char *FolderName ) +{ + + struct stat Buf; + + if ( stat(FolderName, &Buf) != 0 ) return false; // not exist + else if ( !(Buf.st_mode & S_IFDIR) ) return false; // not a directoy + + return true; + +} // FUNCTION : Aux_CheckFolderExist + + + +//------------------------------------------------------------------------------------------------------- +// Function : Aux_CheckPermission +// Description : Check whether or not the target file has requested permissions +// +// Note : Use the "stat" function to query the permission of the target file +// +// Parameter : FileName : Name of the target file +// : perms : Permissions code of the target file (sum of 4->read, 2->write, 1->execute) +// --> Examples: 1. read and write permissions => 6 (4+2) +// 2. read and execute permissions => 5 (4+1) +// +// Return : true/false <-> you does/does not have the file permissions +//------------------------------------------------------------------------------------------------------- +bool Aux_CheckPermission( const char *FileName, const int perms ) +{ + + if ( perms < 0 || perms > 7 ) Aux_Error( ERROR_INFO, "Incorrect file permission code %d (0~7) !!\n", perms ); + + const uid_t curUserId = getuid(); // get user id + const gid_t curGroupId = getgid(); // get group id + + struct stat Buf; + + if ( stat(FileName, &Buf) != 0 ) Aux_Error( ERROR_INFO, "file \"%s\" does not exist !!\n", FileName ); + + int perm_r, perm_w, perm_x; + if ( Buf.st_uid == curUserId ) { perm_r = S_IRUSR; perm_w = S_IWUSR; perm_x = S_IXUSR; } // user + else if ( Buf.st_gid == curGroupId ) { perm_r = S_IRGRP; perm_w = S_IWGRP; perm_x = S_IXGRP; } // group + else { perm_r = S_IROTH; perm_w = S_IWOTH; perm_x = S_IXOTH; } // other + + if ( (perms & 4) && !(Buf.st_mode & perm_r) ) return false; + if ( (perms & 2) && !(Buf.st_mode & perm_w) ) return false; + if ( (perms & 1) && !(Buf.st_mode & perm_x) ) return false; + + return true; + +} // FUNCTION : Aux_CheckPermission diff --git a/src/Auxiliary/Aux_Check_Conservation.cpp b/src/Auxiliary/Aux_Check_Conservation.cpp index acd6a46e51..b70c5a6674 100644 --- a/src/Auxiliary/Aux_Check_Conservation.cpp +++ b/src/Auxiliary/Aux_Check_Conservation.cpp @@ -33,7 +33,8 @@ void Aux_Check_Conservation( const char *comment ) { static bool FirstTime = true; - const char *FileName = "Record__Conservation"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Conservation", OUTPUT_DIR ); # if ( MODEL != HYDRO && MODEL != ELBDM && MODEL != PAR_ONLY ) diff --git a/src/Auxiliary/Aux_Check_MemFree.cpp b/src/Auxiliary/Aux_Check_MemFree.cpp index bfbe6b431d..d9bc640915 100644 --- a/src/Auxiliary/Aux_Check_MemFree.cpp +++ b/src/Auxiliary/Aux_Check_MemFree.cpp @@ -18,6 +18,12 @@ void Aux_Check_MemFree( const double MinMemFree_Total, const char *comment ) { +// memory reporting is not currently supported on macOS +# ifdef __APPLE__ + return; +# endif + + const int StrSize = 128; const char FileName_Mem[StrSize] = "/proc/meminfo"; diff --git a/src/Auxiliary/Aux_Check_Parameter.cpp b/src/Auxiliary/Aux_Check_Parameter.cpp index 1c41984f59..62bb242ec6 100644 --- a/src/Auxiliary/Aux_Check_Parameter.cpp +++ b/src/Auxiliary/Aux_Check_Parameter.cpp @@ -243,6 +243,11 @@ void Aux_Check_Parameter() if ( OPT__MEMORY_POOL && !OPT__REUSE_MEMORY ) Aux_Error( ERROR_INFO, "please turn on OPT__REUSE_MEMORY for OPT__MEMORY_POOL !!\n" ); +# ifdef __APPLE__ + if ( OPT__RECORD_MEMORY ) + Aux_Message( stderr, "WARNING : memory reporting is not currently supported on macOS !!\n" ); +# endif + if ( OPT__CORR_AFTER_ALL_SYNC != CORR_AFTER_SYNC_NONE && OPT__CORR_AFTER_ALL_SYNC != CORR_AFTER_SYNC_EVERY_STEP && OPT__CORR_AFTER_ALL_SYNC != CORR_AFTER_SYNC_BEFORE_DUMP ) Aux_Error( ERROR_INFO, "incorrect option \"OPT__CORR_AFTER_ALL_SYNC = %d\" [0/1/2] !!\n", OPT__CORR_AFTER_ALL_SYNC ); @@ -332,6 +337,17 @@ void Aux_Check_Parameter() # endif // #if ( MODEL == HYDRO ) + if ( strlen(OUTPUT_DIR) > MAX_STRING-100-1 ) + Aux_Error( ERROR_INFO, "Length of OUTPUT_DIR (%d) should be smaller than MAX_STRING-100-1 (%d) !!\n", + strlen(OUTPUT_DIR), MAX_STRING-100-1 ); + + if ( ! Aux_CheckFolderExist( OUTPUT_DIR ) ) + Aux_Error( ERROR_INFO, "\"%s\" folder set by OUTPUT_DIR does not exist !!\n", OUTPUT_DIR ); + + if ( ! Aux_CheckPermission( OUTPUT_DIR, 2+1 ) ) + Aux_Error( ERROR_INFO, "You do not have write and execute permissions for the \"%s\" folder set by OUTPUT_DIR !!\n", OUTPUT_DIR ); + + // general warnings // ======================================================================================= diff --git a/src/Auxiliary/Aux_GetCPUInfo.cpp b/src/Auxiliary/Aux_GetCPUInfo.cpp index d8828be4fe..b998607986 100644 --- a/src/Auxiliary/Aux_GetCPUInfo.cpp +++ b/src/Auxiliary/Aux_GetCPUInfo.cpp @@ -12,6 +12,13 @@ void Aux_GetCPUInfo( const char *FileName ) { +// CPU info reporting is not currently supported on macOS +# ifdef __APPLE__ + Aux_Message( stderr, "WARNING : function \"%s\" is not supported on macOS !!\n", __FUNCTION__ ); + return; +# endif + + FILE *Note = fopen( FileName, "a" ); char *line = NULL; size_t len = 0; diff --git a/src/Auxiliary/Aux_GetMemInfo.cpp b/src/Auxiliary/Aux_GetMemInfo.cpp index 1eec0d7438..faf1a42c4e 100644 --- a/src/Auxiliary/Aux_GetMemInfo.cpp +++ b/src/Auxiliary/Aux_GetMemInfo.cpp @@ -17,17 +17,24 @@ void Aux_GetMemInfo() { - const char FileName_Record[] = "Record__MemInfo"; - const int PID = getpid(); - const int NInfo = 4; // number of memory information to be recorded (VmSize/Peak, VmRSS/HWM) +// memory reporting is not currently supported on macOS +# ifdef __APPLE__ + return; +# endif + + + const int PID = getpid(); + const int NInfo = 4; // number of memory information to be recorded (VmSize/Peak, VmRSS/HWM) static bool FirstTime=true; - char FileName_Status[MAX_STRING], Useless[NInfo][MAX_STRING], *line=NULL; + char FileName_Record[MAX_STRING], FileName_Status[MAX_STRING], Useless[NInfo][MAX_STRING], *line=NULL; char VmSize[MAX_STRING], VmPeak[MAX_STRING], VmRSS[MAX_STRING], VmHWM[MAX_STRING]; bool GetVmSize=false, GetVmPeak=false, GetVmRSS=false, GetVmHWM=false; double Vm_double[NInfo], Vm_max[NInfo], Vm_sum[NInfo]; size_t len=0; + sprintf( FileName_Record, "%s/Record__MemInfo", OUTPUT_DIR ); + // 1. read memory information from the file "FileName_Status" sprintf( FileName_Status, "/proc/%d/status", PID ); diff --git a/src/Auxiliary/Aux_Record_Center.cpp b/src/Auxiliary/Aux_Record_Center.cpp index bac5a0e25f..b19761ced1 100644 --- a/src/Auxiliary/Aux_Record_Center.cpp +++ b/src/Auxiliary/Aux_Record_Center.cpp @@ -20,8 +20,10 @@ void Aux_Record_Center() { - const char FileName[] = "Record__Center"; static bool FirstTime = true; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Center", OUTPUT_DIR ); + // 1. Maximum fluid density in HYDRO/ELBDM Extrema_t Max_Dens; diff --git a/src/Auxiliary/Aux_Record_CorrUnphy.cpp b/src/Auxiliary/Aux_Record_CorrUnphy.cpp index ffbe4a8aa4..c5ad7f844f 100644 --- a/src/Auxiliary/Aux_Record_CorrUnphy.cpp +++ b/src/Auxiliary/Aux_Record_CorrUnphy.cpp @@ -15,8 +15,9 @@ void Aux_Record_CorrUnphy() { - const char FileName[] = "Record__NCorrUnphy"; static bool FirstTime = true; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__NCorrUnphy", OUTPUT_DIR ); long NCorrAllRank[NLEVEL]; FILE *File = NULL; diff --git a/src/Auxiliary/Aux_Record_PatchCount.cpp b/src/Auxiliary/Aux_Record_PatchCount.cpp index 17b51a163c..102297ced2 100644 --- a/src/Auxiliary/Aux_Record_PatchCount.cpp +++ b/src/Auxiliary/Aux_Record_PatchCount.cpp @@ -12,7 +12,9 @@ void Aux_Record_PatchCount() { - const char FileName[] = "Record__PatchCount"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__PatchCount", OUTPUT_DIR ); + static bool FirstTime = true; if ( MPI_Rank == 0 && FirstTime ) diff --git a/src/Auxiliary/Aux_Record_Performance.cpp b/src/Auxiliary/Aux_Record_Performance.cpp index 5dc39964fd..58f202a033 100644 --- a/src/Auxiliary/Aux_Record_Performance.cpp +++ b/src/Auxiliary/Aux_Record_Performance.cpp @@ -20,8 +20,9 @@ void Aux_Record_Performance( const double ElapsedTime ) { - const char FileName[] = "Record__Performance"; static bool FirstTime = true; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Performance", OUTPUT_DIR ); // get the total number of active particles in each rank diff --git a/src/Auxiliary/Aux_Record_User.cpp b/src/Auxiliary/Aux_Record_User.cpp index 7ef904a442..3ecc2b9482 100644 --- a/src/Auxiliary/Aux_Record_User.cpp +++ b/src/Auxiliary/Aux_Record_User.cpp @@ -23,8 +23,9 @@ void (*Aux_Record_User_Ptr)() = NULL; void Aux_Record_User_Template() { - const char FileName[] = "Record__User"; static bool FirstTime = true; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__User", OUTPUT_DIR ); if ( FirstTime ) { diff --git a/src/Auxiliary/Aux_TakeNote.cpp b/src/Auxiliary/Aux_TakeNote.cpp index 3f2aaa9f36..465ac22e5d 100644 --- a/src/Auxiliary/Aux_TakeNote.cpp +++ b/src/Auxiliary/Aux_TakeNote.cpp @@ -4,9 +4,6 @@ #include "CUPOT.h" #endif #include -#ifdef __APPLE__ -#include -#endif #include "time.h" static int get_cpuid(); @@ -25,8 +22,10 @@ void Aux_TakeNote() if ( MPI_Rank == 0 ) Aux_Message( stdout, "Aux_TakeNote ...\n" ); - const char FileName[] = "Record__Note"; FILE *Note; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Note", OUTPUT_DIR ); + if ( MPI_Rank == 0 ) { @@ -39,7 +38,9 @@ void Aux_TakeNote() fprintf( Note, "***********************************************************************************\n" ); fclose( Note ); - system( "cat ./Input__Note >> Record__Note" ); + char Command[MAX_STRING]; + sprintf( Command, "cat ./Input__Note >> %s/Record__Note", OUTPUT_DIR ); + system( Command ); Note = fopen( FileName, "a" ); fprintf( Note, "***********************************************************************************\n" ); @@ -1582,6 +1583,7 @@ void Aux_TakeNote() fprintf( Note, "OPT__OUTPUT_PART % d\n", OPT__OUTPUT_PART ); fprintf( Note, "OPT__OUTPUT_USER % d\n", OPT__OUTPUT_USER ); fprintf( Note, "OPT__OUTPUT_TEXT_FORMAT_FLT %s\n", OPT__OUTPUT_TEXT_FORMAT_FLT ); + fprintf( Note, "OPT__OUTPUT_TEXT_LENGTH_INT % d\n", OPT__OUTPUT_TEXT_LENGTH_INT ); # ifdef PARTICLE fprintf( Note, "OPT__OUTPUT_PAR_MODE % d\n", OPT__OUTPUT_PAR_MODE ); # ifdef TRACER @@ -1640,6 +1642,7 @@ void Aux_TakeNote() fprintf( Note, "OUTPUT_PART_Y % 21.14e\n", OUTPUT_PART_Y ); fprintf( Note, "OUTPUT_PART_Z % 21.14e\n", OUTPUT_PART_Z ); fprintf( Note, "INIT_DUMPID % d\n", INIT_DUMPID ); + fprintf( Note, "OUTPUT_DIR %s\n", OUTPUT_DIR ); fprintf( Note, "***********************************************************************************\n" ); fprintf( Note, "\n\n" ); @@ -2101,23 +2104,16 @@ void Aux_TakeNote() // Function : get_cpuid // Description : Get the CPU ID // -// Note : Work on both macOS and Linux systems +// Note : Works only on Linux systems; macOS is ignored //------------------------------------------------------------------------------------------------------- int get_cpuid() { -// See https://stackoverflow.com/questions/33745364/sched-getcpu-equivalent-for-os-x int CPU; # ifdef __APPLE__ - uint32_t CPUInfo[4]; - __cpuid_count(1, 0, CPUInfo[0], CPUInfo[1], CPUInfo[2], CPUInfo[3]); - if ((CPUInfo[3] & (1 << 9)) == 0) { - CPU = -1; /* no APIC on chip */ - } else { - CPU = (unsigned)CPUInfo[1] >> 24; - } - if (CPU < 0) CPU = 0; +// macOS does not have an implementation of sched_getcpu that works cross-arch + CPU = -1; # else CPU = sched_getcpu(); # endif diff --git a/src/Auxiliary/Aux_Timing.cpp b/src/Auxiliary/Aux_Timing.cpp index 18eb4574df..a348aa170d 100644 --- a/src/Auxiliary/Aux_Timing.cpp +++ b/src/Auxiliary/Aux_Timing.cpp @@ -226,9 +226,9 @@ void Aux_ResetTimer() void Aux_Record_Timing() { - const char FileName[] = "Record__Timing"; - FILE *File = NULL; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Timing", OUTPUT_DIR ); const char Comment_LB[][4] = { "Max", "Min", "Ave" }; const int NLB = 8; @@ -986,9 +986,10 @@ void Timing__Solver( const char FileName[] ) void Aux_AccumulatedTiming( const double TotalT, double InitT, double OtherT ) { - const char FileName[] = "Record__Timing"; const char Comment_LB[][4] = { "Max", "Min", "Ave" }; const int NNewTimer = 2; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Timing", OUTPUT_DIR ); double dt_P, Flu_P, Gra_P, Src_P, Che_P, SF_P, FB_P, FixUp_P, Flag_P, Refine_P, Sum_P, MPI_Grid_P; double Aux_P, Corr_P, Output_P, LB_P, Par_P, MPI_Par_P, libyt_P, Init_P, Other_P; diff --git a/src/Feedback/FB_AdvanceDt.cpp b/src/Feedback/FB_AdvanceDt.cpp index f0723f033d..5428a1d3ea 100644 --- a/src/Feedback/FB_AdvanceDt.cpp +++ b/src/Feedback/FB_AdvanceDt.cpp @@ -81,7 +81,7 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con // 2. allocate a temporary particle repository to store the updated particle data -// --> must initialize it since we will replace amr->Par->AttributeFlt[] by ParAttFlt_Updated[] and +// --> must initialize it since we will replace amr->Par->AttributeFlt[] by ParAttFlt_Updated[] and // amr->Par->AttributeInt[] by ParAttInt_Updated[] at the end of this routine // --> otherwise, the data of particles skipped by this routine (e.g., those not on FB_LEVEL) will be incorrect // --> also to retain the information of inactive particles diff --git a/src/Fluid/Flu_Close.cpp b/src/Fluid/Flu_Close.cpp index 89a375d852..6ef546cf21 100644 --- a/src/Fluid/Flu_Close.cpp +++ b/src/Fluid/Flu_Close.cpp @@ -971,8 +971,8 @@ void CorrectUnphysical( const int lv, const int NPG, const int *PID0_List, const bool CheckMinPres_No = false; real In[NCOMP_TOTAL], tmp[NCOMP_TOTAL]; - char FileName[100]; - sprintf( FileName, "FailedPatchGroup_r%03d_lv%02d_PID0-%05d", MPI_Rank, lv, PID0_List[TID] ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/FailedPatchGroup_r%03d_lv%02d_PID0-%05d", OUTPUT_DIR, MPI_Rank, lv, PID0_List[TID] ); // use "a" instead of "w" since there may be more than one failed cell in a given patch group FILE *File = fopen( FileName, "a" ); diff --git a/src/GPU_API/CUAPI_DiagnoseDevice.cu b/src/GPU_API/CUAPI_DiagnoseDevice.cu index 607b3353bf..a3d4a6c278 100644 --- a/src/GPU_API/CUAPI_DiagnoseDevice.cu +++ b/src/GPU_API/CUAPI_DiagnoseDevice.cu @@ -59,7 +59,8 @@ void CUAPI_DiagnoseDevice() // record the device properties - const char FileName[] = "Record__Note"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Note", OUTPUT_DIR ); if ( MPI_Rank == 0 ) { diff --git a/src/Init/Init_ByRestart_HDF5.cpp b/src/Init/Init_ByRestart_HDF5.cpp index 56b451e96e..4ae2b3156c 100644 --- a/src/Init/Init_ByRestart_HDF5.cpp +++ b/src/Init/Init_ByRestart_HDF5.cpp @@ -2357,6 +2357,7 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) LoadField( "Opt__Output_Step", &RS.Opt__Output_Step, SID, TID, NonFatal, &RT.Opt__Output_Step, 1, NonFatal ); LoadField( "Opt__Output_Dt", &RS.Opt__Output_Dt, SID, TID, NonFatal, &RT.Opt__Output_Dt, 1, NonFatal ); LoadField( "Opt__Output_Text_Format_Flt", &RS.Opt__Output_Text_Format_Flt, SID, TID, NonFatal, RT.Opt__Output_Text_Format_Flt, 1, NonFatal ); + LoadField( "Opt__Output_Text_Length_Int", &RS.Opt__Output_Text_Length_Int, SID, TID, NonFatal, &RT.Opt__Output_Text_Length_Int, 1, NonFatal ); } if ( OPT__OUTPUT_PART ) { LoadField( "Output_PartX", &RS.Output_PartX, SID, TID, NonFatal, &RT.Output_PartX, 1, NonFatal ); diff --git a/src/Init/Init_Load_Parameter.cpp b/src/Init/Init_Load_Parameter.cpp index 902f51edf1..b19f86e3d4 100644 --- a/src/Init/Init_Load_Parameter.cpp +++ b/src/Init/Init_Load_Parameter.cpp @@ -500,9 +500,10 @@ void Init_Load_Parameter() // data dump ReadPara->Add( "OPT__OUTPUT_TOTAL", &OPT__OUTPUT_TOTAL, 1, 0, 2 ); - ReadPara->Add( "OPT__OUTPUT_PART", &OPT__OUTPUT_PART, 0, 0, 7 ); + ReadPara->Add( "OPT__OUTPUT_PART", &OPT__OUTPUT_PART, 0, 0, 8 ); ReadPara->Add( "OPT__OUTPUT_USER", &OPT__OUTPUT_USER, false, Useless_bool, Useless_bool ); ReadPara->Add( "OPT__OUTPUT_TEXT_FORMAT_FLT", OPT__OUTPUT_TEXT_FORMAT_FLT, "%24.16e", Useless_str, Useless_str ); + ReadPara->Add( "OPT__OUTPUT_TEXT_LENGTH_INT",&OPT__OUTPUT_TEXT_LENGTH_INT, 12, 0, NoMax_int ); # ifdef PARTICLE ReadPara->Add( "OPT__OUTPUT_PAR_MODE", &OPT__OUTPUT_PAR_MODE, 0, 0, 2 ); # ifdef TRACER @@ -517,7 +518,7 @@ void Init_Load_Parameter() ReadPara->Add( "OPT__OUTPUT_CC_MAG", &OPT__OUTPUT_CC_MAG, true, Useless_bool, Useless_bool ); # endif # ifdef GRAVITY - ReadPara->Add( "OPT__OUTPUT_POT", &OPT__OUTPUT_POT, true, Useless_bool, Useless_bool ); + ReadPara->Add( "OPT__OUTPUT_POT", &OPT__OUTPUT_POT, true, Useless_bool, Useless_bool ); # endif # ifdef PARTICLE ReadPara->Add( "OPT__OUTPUT_PAR_DENS", &OPT__OUTPUT_PAR_DENS, PAR_OUTPUT_DENS_PAR_ONLY, 0, 2 ); @@ -552,6 +553,7 @@ void Init_Load_Parameter() ReadPara->Add( "OUTPUT_PART_Y", &OUTPUT_PART_Y, -1.0, NoMin_double, NoMax_double ); ReadPara->Add( "OUTPUT_PART_Z", &OUTPUT_PART_Z, -1.0, NoMin_double, NoMax_double ); ReadPara->Add( "INIT_DUMPID", &INIT_DUMPID, -1, NoMin_int, NoMax_int ); + ReadPara->Add( "OUTPUT_DIR", OUTPUT_DIR, ".", Useless_str, Useless_str ); // yt inline analysis diff --git a/src/LoadBalance/LB_EstimateLoadImbalance.cpp b/src/LoadBalance/LB_EstimateLoadImbalance.cpp index cc93dc8d4c..3325a3fed4 100644 --- a/src/LoadBalance/LB_EstimateLoadImbalance.cpp +++ b/src/LoadBalance/LB_EstimateLoadImbalance.cpp @@ -98,8 +98,9 @@ double LB_EstimateLoadImbalance() // 4. write to the file "Record__LoadBalance" if ( OPT__RECORD_LOAD_BALANCE ) { - const char FileName[] = "Record__LoadBalance"; static bool FirstTime = true; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__LoadBalance", OUTPUT_DIR ); if ( FirstTime ) { diff --git a/src/LoadBalance/LB_GetBufferData.cpp b/src/LoadBalance/LB_GetBufferData.cpp index a766d7620a..2d8b070ad6 100644 --- a/src/LoadBalance/LB_GetBufferData.cpp +++ b/src/LoadBalance/LB_GetBufferData.cpp @@ -1639,8 +1639,8 @@ void LB_GetBufferData( const int lv, const int FluSg, const int MagSg, const int # ifdef TIMING if ( OPT__TIMING_MPI ) { - char FileName[100]; - sprintf( FileName, "Record__TimingMPI_Rank%05d", MPI_Rank ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__TimingMPI_Rank%05d", OUTPUT_DIR, MPI_Rank ); char ModeName[100]; switch ( GetBufMode ) diff --git a/src/Main/Main.cpp b/src/Main/Main.cpp index a471b2e184..8cdbe9629f 100644 --- a/src/Main/Main.cpp +++ b/src/Main/Main.cpp @@ -73,10 +73,12 @@ bool OPT__OPTIMIZE_AGGRESSIVE, OPT__INIT_GRID_WITH_OMP, OPT__NO_ bool OPT__RECORD_NOTE, OPT__RECORD_UNPHY, INT_OPP_SIGN_0TH_ORDER; bool OPT__INT_FRAC_PASSIVE_LR, OPT__CK_INPUT_FLUID, OPT__SORT_PATCH_BY_LBIDX; char OPT__OUTPUT_TEXT_FORMAT_FLT[MAX_STRING]; +int OPT__OUTPUT_TEXT_LENGTH_INT; int OPT__UM_IC_FLOAT8; double COM_CEN_X, COM_CEN_Y, COM_CEN_Z, COM_MAX_R, COM_MIN_RHO, COM_TOLERR_R; int COM_MAX_ITER; double ANGMOM_ORIGIN_X, ANGMOM_ORIGIN_Y, ANGMOM_ORIGIN_Z; +char OUTPUT_DIR[MAX_STRING-100]; double FLAG_ANGULAR_CEN_X, FLAG_ANGULAR_CEN_Y, FLAG_ANGULAR_CEN_Z; double FLAG_RADIAL_CEN_X, FLAG_RADIAL_CEN_Y, FLAG_RADIAL_CEN_Z; @@ -854,7 +856,10 @@ int main( int argc, char *argv[] ) if ( MPI_Rank == 0 && OPT__RECORD_NOTE ) { - FILE *Note = fopen( "Record__Note", "a" ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Note", OUTPUT_DIR ); + + FILE *Note = fopen( FileName, "a" ); fprintf( Note, "\n" ); fprintf( Note, "Total Processing Time : %lf s\n", Timer_Total.GetValue() ); fprintf( Note, "\n" ); diff --git a/src/Makefile_base b/src/Makefile_base index 14e06f7d11..42c698030f 100644 --- a/src/Makefile_base +++ b/src/Makefile_base @@ -407,7 +407,7 @@ endif # ------------------------------------------------------------------------------- ifeq "$(filter -DGPU, $(SIMU_OPTION))" "-DGPU" LIB += -L$(CUDA_PATH)/lib64 -LIB += -Wl,-rpath=$(CUDA_PATH)/lib64 +LIB += -Wl,-rpath,$(CUDA_PATH)/lib64 LIB += -lcudart endif @@ -417,7 +417,7 @@ endif ifeq "$(filter -DSUPPORT_FFTW=FFTW3, $(SIMU_OPTION))" "-DSUPPORT_FFTW=FFTW3" LIB += -L$(FFTW3_PATH)/lib - LIB += -Wl,-rpath=$(FFTW3_PATH)/lib + LIB += -Wl,-rpath,$(FFTW3_PATH)/lib ifeq "$(filter -DSERIAL, $(SIMU_OPTION))" "-DSERIAL" LIB += -lfftw3 -lfftw3f -lm else @@ -431,7 +431,7 @@ endif ifeq "$(filter -DSUPPORT_FFTW=FFTW2, $(SIMU_OPTION))" "-DSUPPORT_FFTW=FFTW2" LIB += -L$(FFTW2_PATH)/lib - LIB += -Wl,-rpath=$(FFTW2_PATH)/lib + LIB += -Wl,-rpath,$(FFTW2_PATH)/lib ifeq "$(filter -DFLOAT8, $(SIMU_OPTION))" "-DFLOAT8" ifeq "$(filter -DSERIAL, $(SIMU_OPTION))" "-DSERIAL" LIB += -ldrfftw -ldfftw @@ -449,22 +449,22 @@ endif ifeq "$(filter -DSUPPORT_GRACKLE, $(SIMU_OPTION))" "-DSUPPORT_GRACKLE" LIB += -L$(GRACKLE_PATH)/lib -lgrackle -LIB += -Wl,-rpath=$(GRACKLE_PATH)/lib +LIB += -Wl,-rpath,$(GRACKLE_PATH)/lib endif ifeq "$(filter -DSUPPORT_HDF5, $(SIMU_OPTION))" "-DSUPPORT_HDF5" LIB += -L$(HDF5_PATH)/lib -lhdf5 -LIB += -Wl,-rpath=$(HDF5_PATH)/lib +LIB += -Wl,-rpath,$(HDF5_PATH)/lib endif ifeq "$(filter -DSUPPORT_GSL, $(SIMU_OPTION))" "-DSUPPORT_GSL" LIB += -L$(GSL_PATH)/lib -lgsl -lgslcblas -LIB += -Wl,-rpath=$(GSL_PATH)/lib +LIB += -Wl,-rpath,$(GSL_PATH)/lib endif ifeq "$(filter -DSUPPORT_LIBYT, $(SIMU_OPTION))" "-DSUPPORT_LIBYT" LIB += -L$(LIBYT_PATH)/lib -lyt -LIB += -Wl,-rpath=$(LIBYT_PATH)/lib +LIB += -Wl,-rpath,$(LIBYT_PATH)/lib endif diff --git a/src/Miscellaneous/Mis_GetTimeStep.cpp b/src/Miscellaneous/Mis_GetTimeStep.cpp index 0ba4340add..06ae395c61 100644 --- a/src/Miscellaneous/Mis_GetTimeStep.cpp +++ b/src/Miscellaneous/Mis_GetTimeStep.cpp @@ -28,9 +28,10 @@ double Mis_GetTimeStep( const int lv, const double dTime_SyncFaLv, const double AutoReduceDtCoeff ) { - const char FileName[] = "Record__TimeStep"; static bool FirstTime = true; const int NdTimeMax = 20; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__TimeStep", OUTPUT_DIR ); char (*dTime_Name)[MAX_STRING] = new char [NdTimeMax][MAX_STRING]; double *dTime = new double [NdTimeMax]; diff --git a/src/Model_ELBDM/ELBDM_Aux_Record_Hybrid.cpp b/src/Model_ELBDM/ELBDM_Aux_Record_Hybrid.cpp index 8441fd0784..b5e03e2ee5 100644 --- a/src/Model_ELBDM/ELBDM_Aux_Record_Hybrid.cpp +++ b/src/Model_ELBDM/ELBDM_Aux_Record_Hybrid.cpp @@ -19,7 +19,8 @@ void ELBDM_Aux_Record_Hybrid() static bool FirstTime = true; - const char *FileName = "Record__Hybrid"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Hybrid", OUTPUT_DIR ); FILE *File = NULL; if ( FirstTime ) diff --git a/src/Model_ELBDM/ELBDM_Flag_Spectral.cpp b/src/Model_ELBDM/ELBDM_Flag_Spectral.cpp index b8b77764de..811981d67b 100644 --- a/src/Model_ELBDM/ELBDM_Flag_Spectral.cpp +++ b/src/Model_ELBDM/ELBDM_Flag_Spectral.cpp @@ -50,7 +50,7 @@ const static flag_spectral_float Flag_Spectral_Polynomials[FLAG_SPECTRAL_ORDER] // Cond : Reference to a floating-point variable storing the magnitude // of the largest coefficient // -// Return : Cond +// Return : Cond //------------------------------------------------------------------------------------------------------- void Prepare_for_Spectral_Criterion( const real *Var1D, real& Cond ) { diff --git a/src/Model_Hydro/MHD_Aux_Check_DivergenceB.cpp b/src/Model_Hydro/MHD_Aux_Check_DivergenceB.cpp index 69cf5d8e3f..b789b151a3 100644 --- a/src/Model_Hydro/MHD_Aux_Check_DivergenceB.cpp +++ b/src/Model_Hydro/MHD_Aux_Check_DivergenceB.cpp @@ -129,7 +129,8 @@ void MHD_Aux_Check_DivergenceB( const bool Verbose, const char *comment ) if ( MPI_Rank == 0 ) { static bool FirstTime = true; - const char *FileName = "Record__DivB"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__DivB", OUTPUT_DIR ); // output header if ( FirstTime ) diff --git a/src/Output/Output_BoundaryFlagList.cpp b/src/Output/Output_BoundaryFlagList.cpp index 7c665b98c0..ab3d26fe59 100644 --- a/src/Output/Output_BoundaryFlagList.cpp +++ b/src/Output/Output_BoundaryFlagList.cpp @@ -20,9 +20,9 @@ void Output_BoundaryFlagList( const int option, const int lv, const char *commen Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "option", option ); - char FileName[100]; - if ( option ) sprintf( FileName, "BoundaryFlagList_%d_%d", MPI_Rank, lv ); - else sprintf( FileName, "BufferFlagList_%d_%d", MPI_Rank, lv ); + char FileName[MAX_STRING]; + if ( option ) sprintf( FileName, "%s/BoundaryFlagList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); + else sprintf( FileName, "%s/BufferFlagList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); if ( comment != NULL ) { diff --git a/src/Output/Output_DumpData.cpp b/src/Output/Output_DumpData.cpp index 9e6961956b..676f5875b8 100644 --- a/src/Output/Output_DumpData.cpp +++ b/src/Output/Output_DumpData.cpp @@ -103,45 +103,50 @@ void Output_DumpData( const int Stage ) // set the file names for all output functions - char FileName_Total[50], FileName_Part[50], FileName_Temp[50], FileName_PS[50]; + char FileName_Total[MAX_STRING], FileName_Part[MAX_STRING], FileName_Temp[MAX_STRING], FileName_PS[MAX_STRING]; # ifdef PARTICLE - char FileName_Particle[50]; + char FileName_Particle[MAX_STRING]; # endif - if ( OPT__OUTPUT_TOTAL ) sprintf( FileName_Total, "Data_%06d", DumpID ); + if ( OPT__OUTPUT_TOTAL ) + { + sprintf( FileName_Total, "%s/Data_%06d", OUTPUT_DIR, DumpID ); + } if ( OPT__OUTPUT_PART ) { + sprintf( FileName_Part, "%s/", OUTPUT_DIR ); switch ( OPT__OUTPUT_PART ) { - case OUTPUT_XY : sprintf( FileName_Temp, "XYslice_z%.3f_%06d", OUTPUT_PART_Z, DumpID ); break; - case OUTPUT_YZ : sprintf( FileName_Temp, "YZslice_x%.3f_%06d", OUTPUT_PART_X, DumpID ); break; - case OUTPUT_XZ : sprintf( FileName_Temp, "XZslice_y%.3f_%06d", OUTPUT_PART_Y, DumpID ); break; - case OUTPUT_X : sprintf( FileName_Temp, "Xline_y%.3f_z%.3f_%06d", OUTPUT_PART_Y, OUTPUT_PART_Z, DumpID ); break; - case OUTPUT_Y : sprintf( FileName_Temp, "Yline_x%.3f_z%.3f_%06d", OUTPUT_PART_X, OUTPUT_PART_Z, DumpID ); break; - case OUTPUT_Z : sprintf( FileName_Temp, "Zline_x%.3f_y%.3f_%06d", OUTPUT_PART_X, OUTPUT_PART_Y, DumpID ); break; + case OUTPUT_XY : sprintf( FileName_Temp, "XYslice_z%.3f_%06d", OUTPUT_PART_Z, DumpID ); break; + case OUTPUT_YZ : sprintf( FileName_Temp, "YZslice_x%.3f_%06d", OUTPUT_PART_X, DumpID ); break; + case OUTPUT_XZ : sprintf( FileName_Temp, "XZslice_y%.3f_%06d", OUTPUT_PART_Y, DumpID ); break; + case OUTPUT_X : sprintf( FileName_Temp, "Xline_y%.3f_z%.3f_%06d", OUTPUT_PART_Y, OUTPUT_PART_Z, DumpID ); break; + case OUTPUT_Y : sprintf( FileName_Temp, "Yline_x%.3f_z%.3f_%06d", OUTPUT_PART_X, OUTPUT_PART_Z, DumpID ); break; + case OUTPUT_Z : sprintf( FileName_Temp, "Zline_x%.3f_y%.3f_%06d", OUTPUT_PART_X, OUTPUT_PART_Y, DumpID ); break; case OUTPUT_DIAG : sprintf( FileName_Temp, "Diag_%06d", DumpID ); break; + case OUTPUT_BOX : sprintf( FileName_Temp, "Box_%06d", DumpID ); break; default : Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "OPT__OUTPUT_PART", OPT__OUTPUT_PART ); } // switch ( OPT__OUTPUT_PART ) if ( OPT__OUTPUT_BASE ) { - sprintf( FileName_Part, "%s", "Base" ); + strcat( FileName_Part, "Base" ); strcat( FileName_Part, FileName_Temp ); } else - strcpy( FileName_Part, FileName_Temp ); + strcat( FileName_Part, FileName_Temp ); } // if ( OPT__OUTPUT_PART ) if ( OPT__OUTPUT_BASEPS ) - sprintf( FileName_PS, "PowerSpec_%06d", DumpID ); + sprintf( FileName_PS, "%s/PowerSpec_%06d", OUTPUT_DIR, DumpID ); # ifdef PARTICLE if ( OPT__OUTPUT_PAR_MODE == OUTPUT_PAR_TEXT ) - sprintf( FileName_Particle, "Particle_%06d.txt", DumpID ); + sprintf( FileName_Particle, "%s/Particle_%06d.txt", OUTPUT_DIR, DumpID ); if ( OPT__OUTPUT_PAR_MODE == OUTPUT_PAR_CBIN ) - sprintf( FileName_Particle, "Particle_%06d.cbin", DumpID ); + sprintf( FileName_Particle, "%s/Particle_%06d.cbin", OUTPUT_DIR, DumpID ); # endif @@ -313,7 +318,8 @@ void Output_DumpData( const int Stage ) void Write_DumpRecord() { - const char FileName[] = "Record__Dump"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Dump", OUTPUT_DIR ); // create the "Record__Dump" file at the first dump diff --git a/src/Output/Output_DumpData_Part.cpp b/src/Output/Output_DumpData_Part.cpp index 8940b65724..ddd269c27d 100644 --- a/src/Output/Output_DumpData_Part.cpp +++ b/src/Output/Output_DumpData_Part.cpp @@ -25,6 +25,7 @@ static void GetDerivedField( real (*Der_FluIn)[NCOMP_TOTAL][ CUBE(DER_NXT) // OUTPUT_Y : y line // OUTPUT_Z : z line // OUTPUT_DIAG : diagonal along (+1,+1,+1) +// OUTPUT_BOX : entire box // // BaseOnly : Only output the base-level data // @@ -42,9 +43,10 @@ void Output_DumpData_Part( const OptOutputPart_t Part, const bool BaseOnly, cons // check the input parameters - if ( Part != OUTPUT_XY && Part != OUTPUT_YZ && Part != OUTPUT_XZ && - Part != OUTPUT_X && Part != OUTPUT_Y && Part != OUTPUT_Z && Part != OUTPUT_DIAG ) - Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [0 ~ 6] !!\n", Part ); + if ( Part != OUTPUT_XY && Part != OUTPUT_YZ && Part != OUTPUT_XZ && + Part != OUTPUT_X && Part != OUTPUT_Y && Part != OUTPUT_Z && + Part != OUTPUT_DIAG && Part != OUTPUT_BOX ) + Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [0 ~ 8] !!\n", Part ); if ( ( Part == OUTPUT_YZ || Part == OUTPUT_Y || Part == OUTPUT_Z ) && ( x < 0.0 || x >= amr->BoxSize[0] ) ) @@ -93,14 +95,15 @@ void Output_DumpData_Part( const OptOutputPart_t Part, const bool BaseOnly, cons switch ( Part ) { - case OUTPUT_XY : Check_z = true; break; - case OUTPUT_YZ : Check_x = true; break; - case OUTPUT_XZ : Check_y = true; break; - case OUTPUT_X : Check_y = true; Check_z = true; break; - case OUTPUT_Y : Check_x = true; Check_z = true; break; - case OUTPUT_Z : Check_x = true; Check_y = true; break; + case OUTPUT_XY : Check_z = true; break; + case OUTPUT_YZ : Check_x = true; break; + case OUTPUT_XZ : Check_y = true; break; + case OUTPUT_X : Check_y = true; Check_z = true; break; + case OUTPUT_Y : Check_x = true; Check_z = true; break; + case OUTPUT_Z : Check_x = true; Check_y = true; break; case OUTPUT_DIAG : + case OUTPUT_BOX : case OUTPUT_PART_NONE : break; // do nothing } @@ -241,7 +244,7 @@ void Output_DumpData_Part( const OptOutputPart_t Part, const bool BaseOnly, cons }}} } // if patch corner is within the target range - } // if ( Part == OUTPUT_DIAG ... else ... ) + } // if ( Part == OUTPUT_DIAG ) ... else ... } // if ( amr->patch[0][lv][PID]->son == -1 ) } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) } // for (int lv=0; lv output OPT__FLAG_ANGULAR, FlagTable_Angular, FLAG_ANGULAR_CEN_X, FLAG_ANGULAR_CEN_Y, FLAG_ANGULAR_CEN_Z // OPT__FLAG_RADIAL, FlagTable_Radial, FLAG_RADIAL_CEN_X, FLAG_RADIAL_CEN_Y, FLAG_RADIAL_CEN_Z // 2500 : 2024/07/01 --> output particle integer attributes +// 2501 : 2025/01/15 --> output OPT__OUTPUT_TEXT_LENGTH_INT //------------------------------------------------------------------------------------------------------- void Output_DumpData_Total_HDF5( const char *FileName ) { @@ -1612,7 +1613,7 @@ void FillIn_KeyInfo( KeyInfo_t &KeyInfo, const int NFieldStored ) const time_t CalTime = time( NULL ); // calendar time - KeyInfo.FormatVersion = 2500; + KeyInfo.FormatVersion = 2501; KeyInfo.Model = MODEL; KeyInfo.NLevel = NLEVEL; KeyInfo.NCompFluid = NCOMP_FLUID; @@ -2781,6 +2782,7 @@ void FillIn_InputPara( InputPara_t &InputPara, const int NFieldStored, char Fiel InputPara.Opt__Output_Step = OUTPUT_STEP; InputPara.Opt__Output_Dt = OUTPUT_DT; InputPara.Opt__Output_Text_Format_Flt = OPT__OUTPUT_TEXT_FORMAT_FLT; + InputPara.Opt__Output_Text_Length_Int = OPT__OUTPUT_TEXT_LENGTH_INT; InputPara.Output_PartX = OUTPUT_PART_X; InputPara.Output_PartY = OUTPUT_PART_Y; InputPara.Output_PartZ = OUTPUT_PART_Z; @@ -3822,6 +3824,7 @@ void GetCompound_InputPara( hid_t &H5_TypeID, const int NFieldStored ) H5Tinsert( H5_TypeID, "Opt__Output_Step", HOFFSET(InputPara_t,Opt__Output_Step ), H5T_NATIVE_INT ); H5Tinsert( H5_TypeID, "Opt__Output_Dt", HOFFSET(InputPara_t,Opt__Output_Dt ), H5T_NATIVE_DOUBLE ); H5Tinsert( H5_TypeID, "Opt__Output_Text_Format_Flt", HOFFSET(InputPara_t,Opt__Output_Text_Format_Flt), H5_TypeID_VarStr ); + H5Tinsert( H5_TypeID, "Opt__Output_Text_Length_Int", HOFFSET(InputPara_t,Opt__Output_Text_Length_Int), H5T_NATIVE_INT ); H5Tinsert( H5_TypeID, "Output_PartX", HOFFSET(InputPara_t,Output_PartX ), H5T_NATIVE_DOUBLE ); H5Tinsert( H5_TypeID, "Output_PartY", HOFFSET(InputPara_t,Output_PartY ), H5T_NATIVE_DOUBLE ); H5Tinsert( H5_TypeID, "Output_PartZ", HOFFSET(InputPara_t,Output_PartZ ), H5T_NATIVE_DOUBLE ); diff --git a/src/Output/Output_ExchangeDataPatchList.cpp b/src/Output/Output_ExchangeDataPatchList.cpp index c2757796f7..2be286fe7e 100644 --- a/src/Output/Output_ExchangeDataPatchList.cpp +++ b/src/Output/Output_ExchangeDataPatchList.cpp @@ -20,9 +20,9 @@ void Output_ExchangeDataPatchList( const int option, const int lv, const char *c Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "option", option ); - char FileName[100]; - if ( option ) sprintf( FileName, "SendDataPatchList_%d_%d", MPI_Rank, lv ); - else sprintf( FileName, "RecvDataPatchList_%d_%d", MPI_Rank, lv ); + char FileName[MAX_STRING]; + if ( option ) sprintf( FileName, "%s/SendDataPatchList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); + else sprintf( FileName, "%s/RecvDataPatchList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); if ( comment != NULL ) { diff --git a/src/Output/Output_ExchangeFluxPatchList.cpp b/src/Output/Output_ExchangeFluxPatchList.cpp index d92b5e8d1a..c88c90c8ec 100644 --- a/src/Output/Output_ExchangeFluxPatchList.cpp +++ b/src/Output/Output_ExchangeFluxPatchList.cpp @@ -22,12 +22,12 @@ void Output_ExchangeFluxPatchList( const int option, const int lv, const char *c Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "lv", lv ); - char FileName[100]; + char FileName[MAX_STRING]; switch ( option ) { - case 0: sprintf( FileName, "SendFluxPatchList_%d_%d", MPI_Rank, lv ); + case 0: sprintf( FileName, "%s/SendFluxPatchList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); break; - case 1: sprintf( FileName, "RecvFluxPatchList_%d_%d", MPI_Rank, lv ); + case 1: sprintf( FileName, "%s/RecvFluxPatchList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); break; } diff --git a/src/Output/Output_ExchangePatchMap.cpp b/src/Output/Output_ExchangePatchMap.cpp index 3921cebb6e..5e06f8e5d1 100644 --- a/src/Output/Output_ExchangePatchMap.cpp +++ b/src/Output/Output_ExchangePatchMap.cpp @@ -58,8 +58,8 @@ void Output_ExchangePatchMap( const int lv, const int xyz, const char *comment ) } - char FileName[100]; - sprintf( FileName, "ExchangePatchMap_%d_%d_%2s", MPI_Rank, lv, Dim[1] ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/ExchangePatchMap_%d_%d_%2s", OUTPUT_DIR, MPI_Rank, lv, Dim[1] ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_FlagMap.cpp b/src/Output/Output_FlagMap.cpp index 05ce0b1750..837db08b51 100644 --- a/src/Output/Output_FlagMap.cpp +++ b/src/Output/Output_FlagMap.cpp @@ -54,8 +54,8 @@ void Output_FlagMap( const int lv, const int xyz, const char *comment ) } - char FileName[100]; - sprintf( FileName, "FlagMap_%d_%d_%2s", MPI_Rank, lv, Dim[1] ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/FlagMap_%d_%d_%2s", OUTPUT_DIR, MPI_Rank, lv, Dim[1] ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_Flux.cpp b/src/Output/Output_Flux.cpp index 8c1abfff6d..45ae17e31e 100644 --- a/src/Output/Output_Flux.cpp +++ b/src/Output/Output_Flux.cpp @@ -34,8 +34,8 @@ void Output_Flux( const int lv, const int PID, const int Sib, const char *commen patch_t *Relation = amr->patch[0][lv][PID]; - char FileName[100]; - sprintf( FileName, "Flux_r%d_lv%d_p%d%c%c", MPI_Rank, lv, PID, 45-2*(Sib%2), 120+Sib/2 ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Flux_r%d_lv%d_p%d%c%c", OUTPUT_DIR, MPI_Rank, lv, PID, 45-2*(Sib%2), 120+Sib/2 ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_L1Error.cpp b/src/Output/Output_L1Error.cpp index 220cee5634..782deab1a9 100644 --- a/src/Output/Output_L1Error.cpp +++ b/src/Output/Output_L1Error.cpp @@ -38,10 +38,14 @@ static void WriteFile( void (*AnalFunc_Flu)( real fluid[], const double x, const // --> Usually set to the same function pointer for initializing B field // (e.g., SetBFieldIC() in various test problems) // Prefix : Prefix of the output filename -// Part : OUTPUT_X : x line +// Part : OUTPUT_XY : x-y plane +// OUTPUT_XZ : x-z plane +// OUTPUT_YZ : y-z plane +// OUTPUT_X : x line // OUTPUT_Y : y line // OUTPUT_Z : z line // OUTPUT_DIAG : diagonal along (+1,+1,+1) +// OUTPUT_BOX : entire box // x/y/z : spatial coordinates for Part // // Return : None @@ -74,38 +78,38 @@ void Output_L1Error( void (*AnalFunc_Flu)( real fluid[], const double x, const d char FileName[NERR][MAX_STRING]; # if ( MODEL == HYDRO ) - sprintf( FileName[ 0], "%s_Dens_%06d", Prefix, DumpID ); - sprintf( FileName[ 1], "%s_MomX_%06d", Prefix, DumpID ); - sprintf( FileName[ 2], "%s_MomY_%06d", Prefix, DumpID ); - sprintf( FileName[ 3], "%s_MomZ_%06d", Prefix, DumpID ); - sprintf( FileName[ 4], "%s_Pres_%06d", Prefix, DumpID ); + sprintf( FileName[ 0], "%s/%s_Dens_%06d", OUTPUT_DIR, Prefix, DumpID ); + sprintf( FileName[ 1], "%s/%s_MomX_%06d", OUTPUT_DIR, Prefix, DumpID ); + sprintf( FileName[ 2], "%s/%s_MomY_%06d", OUTPUT_DIR, Prefix, DumpID ); + sprintf( FileName[ 3], "%s/%s_MomZ_%06d", OUTPUT_DIR, Prefix, DumpID ); + sprintf( FileName[ 4], "%s/%s_Pres_%06d", OUTPUT_DIR, Prefix, DumpID ); for (int v=0; v= 2 ) + fprintf( File[v], " %*s %c", StrLen_Flt, "Coord.", coord2 ); + if ( dim == 3 ) + fprintf( File[v], " %*s %c", StrLen_Flt, "Coord.", coord3 ); + + fprintf( File[v], " %*s %*s %*s\n", + StrLen_Flt, "Numerical", StrLen_Flt, "Analytical", StrLen_Flt, "Error" ); + } } @@ -194,11 +212,11 @@ void Output_L1Error( void (*AnalFunc_Flu)( real fluid[], const double x, const d for (int k=0; kx || xx+dh<=x ) ) continue; WriteFile( AnalFunc_Flu, AnalFunc_Mag, File, lv, PID, i, j, k, L1_Err, Part ); + NGrid++; }}} } - } // if ( Part == OUTPUT_DIAG ... else ... ) + } // if ( Part == OUTPUT_DIAG ) ... else ... } // if ( amr->patch[0][lv][PID]->son == -1 ) } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) } // for (int lv=0; lvBoxSize[0]; break; - case OUTPUT_Y : Norm = amr->BoxSize[1]; break; - case OUTPUT_Z : Norm = amr->BoxSize[2]; break; - case OUTPUT_DIAG : Norm = amr->BoxSize[0]; break; - default : Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [4/5/6/7] !!\n", Part ); + case OUTPUT_XY : Norm = amr->BoxSize[0]*amr->BoxSize[1]; break; + case OUTPUT_XZ : Norm = amr->BoxSize[0]*amr->BoxSize[2]; break; + case OUTPUT_YZ : Norm = amr->BoxSize[1]*amr->BoxSize[2]; break; + case OUTPUT_X : Norm = amr->BoxSize[0]; break; + case OUTPUT_Y : Norm = amr->BoxSize[1]; break; + case OUTPUT_Z : Norm = amr->BoxSize[2]; break; + case OUTPUT_DIAG : Norm = amr->BoxSize[0]; break; + case OUTPUT_BOX : Norm = amr->BoxSize[0]*amr->BoxSize[1]*amr->BoxSize[2]; break; + default : Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [1/2/3/4/5/6/7/8] !!\n", Part ); } for (int v=0; v= 2 ) { + fprintf( File[v], " " ); + fprintf( File[v], BlankPlusFormat_Flt, r2 ); } + if ( dim == 3 ) { + fprintf( File[v], " " ); + fprintf( File[v], BlankPlusFormat_Flt, r3 ); } fprintf( File[v], BlankPlusFormat_Flt, Nume[v] ); fprintf( File[v], BlankPlusFormat_Flt, Anal[v] ); fprintf( File[v], BlankPlusFormat_Flt, Err[v] ); diff --git a/src/Output/Output_Patch.cpp b/src/Output/Output_Patch.cpp index 14342a2d88..05ec4298e5 100644 --- a/src/Output/Output_Patch.cpp +++ b/src/Output/Output_Patch.cpp @@ -59,8 +59,8 @@ void Output_Patch( const int lv, const int PID, const int FluSg, const int MagSg real (*pot)[PS1][PS1] = amr->patch[PotSg][lv][PID]->pot; # endif - char FileName[100]; - sprintf( FileName, "Patch_r%d_lv%d_p%d", MPI_Rank, lv, PID ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Patch_r%d_lv%d_p%d", OUTPUT_DIR, MPI_Rank, lv, PID ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_PatchCorner.cpp b/src/Output/Output_PatchCorner.cpp index a3e5d9af71..f3f6b4d452 100644 --- a/src/Output/Output_PatchCorner.cpp +++ b/src/Output/Output_PatchCorner.cpp @@ -18,8 +18,8 @@ void Output_PatchCorner( const int lv, const char *comment ) { - char FileName[100]; - sprintf( FileName, "PatchCorner_%05d_%02d", MPI_Rank, lv ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/PatchCorner_%05d_%02d", OUTPUT_DIR, MPI_Rank, lv ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_PatchMap.cpp b/src/Output/Output_PatchMap.cpp index 02cb404320..5c04d91175 100644 --- a/src/Output/Output_PatchMap.cpp +++ b/src/Output/Output_PatchMap.cpp @@ -49,8 +49,8 @@ void Output_PatchMap( const int lv, const int PID, const int TSg, const int Comp patch_t *Relation = amr->patch[ 0][lv][PID]; patch_t *Data = amr->patch[TSg][lv][PID]; - char FileName[100]; - sprintf( FileName, "PatchMap_r%d_lv%d_p%d_v%d", MPI_Rank, lv, PID, Comp ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/PatchMap_r%d_lv%d_p%d_v%d", OUTPUT_DIR, MPI_Rank, lv, PID, Comp ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_PreparedPatch_Fluid.cpp b/src/Output/Output_PreparedPatch_Fluid.cpp index d013ec11e2..32c32ddef7 100644 --- a/src/Output/Output_PreparedPatch_Fluid.cpp +++ b/src/Output/Output_PreparedPatch_Fluid.cpp @@ -50,8 +50,8 @@ void Output_PreparedPatch_Fluid( const int TLv, const int TPID, // begin to output the prepared data patch_t *Relation = amr->patch[0][TLv][TPID]; - char FileName[100]; - sprintf( FileName, "PrePatch_Fluid_r%d_lv%d_p%d", MPI_Rank, TLv, TPID ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/PrePatch_Fluid_r%d_lv%d_p%d", OUTPUT_DIR, MPI_Rank, TLv, TPID ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Particle/LoadBalance/Par_LB_SendParticleData.cpp b/src/Particle/LoadBalance/Par_LB_SendParticleData.cpp index 20dce8d095..39dc256946 100644 --- a/src/Particle/LoadBalance/Par_LB_SendParticleData.cpp +++ b/src/Particle/LoadBalance/Par_LB_SendParticleData.cpp @@ -253,8 +253,8 @@ void Par_LB_SendParticleData( const int NParAttFlt, const int NParAttInt, int *S dtime = Timer->GetValue() - time0; // output to the same log file as LB_GetBufferData - char FileName[100]; - sprintf( FileName, "Record__TimingMPI_Rank%05d", MPI_Rank ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__TimingMPI_Rank%05d", OUTPUT_DIR, MPI_Rank ); FILE *File = fopen( FileName, "a" ); diff --git a/src/Particle/Par_Aux_Record_ParticleCount.cpp b/src/Particle/Par_Aux_Record_ParticleCount.cpp index a92ba99205..3e8327ad48 100644 --- a/src/Particle/Par_Aux_Record_ParticleCount.cpp +++ b/src/Particle/Par_Aux_Record_ParticleCount.cpp @@ -15,8 +15,9 @@ void Par_Aux_Record_ParticleCount() { - const char FileName[] = "Record__ParticleCount"; static bool FirstTime = true; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__ParticleCount", OUTPUT_DIR ); if ( MPI_Rank == 0 && FirstTime ) { diff --git a/src/Particle/Par_Output_TextFile.cpp b/src/Particle/Par_Output_TextFile.cpp index f71c3917af..c54771afb2 100644 --- a/src/Particle/Par_Output_TextFile.cpp +++ b/src/Particle/Par_Output_TextFile.cpp @@ -38,7 +38,7 @@ void Par_Output_TextFile( const char *FileName ) fprintf( File, " %*s", (v==0)?StrLen_Flt-1:StrLen_Flt, ParAttFltLabel[v] ); for (int v=0; vPar->Mass[p] < 0.0 ) continue; for (int v=0; vPar->AttributeFlt[v][p] ); -# ifdef INT8_PAR - for (int v=0; vPar->AttributeInt[v][p] ); -# else - for (int v=0; vPar->AttributeInt[v][p] ); -# endif + for (int v=0; vPar->AttributeInt[v][p] ); fprintf( File, "\n" ); } diff --git a/src/TestProblem/Hydro/Bondi/ExtAcc_Bondi.cpp b/src/TestProblem/Hydro/Bondi/ExtAcc_Bondi.cpp index 44af678bbb..913058f677 100644 --- a/src/TestProblem/Hydro/Bondi/ExtAcc_Bondi.cpp +++ b/src/TestProblem/Hydro/Bondi/ExtAcc_Bondi.cpp @@ -21,6 +21,11 @@ extern double Bondi_MassBH; extern double Bondi_Soften_R; +extern bool Bondi_Soliton; +extern double Bondi_Soliton_m22; +extern double Bondi_Soliton_rc; +extern int Bondi_Soliton_type; +extern double Bondi_Soliton_t; //------------------------------------------------------------------------------------------------------- // Function : SetExtAccAuxArray_Bondi @@ -41,9 +46,55 @@ void SetExtAccAuxArray_Bondi( double AuxArray[], const double Time ) AuxArray[0] = amr->BoxCenter[0]; AuxArray[1] = amr->BoxCenter[1]; AuxArray[2] = amr->BoxCenter[2]; - AuxArray[3] = NEWTON_G*Bondi_MassBH; // gravitational_constant*point_source_mass + AuxArray[3] = NEWTON_G*Bondi_MassBH; // gravitational_constant*black_hole_mass (in code units) AuxArray[4] = Bondi_Soften_R; // soften_length (<=0.0 --> disable) + double Coeff_t; + switch ( Bondi_Soliton_type ) + { +// unity + case 0: Coeff_t = 1.0; + break; + +// arctan function + case 1: Coeff_t = 2.0/M_PI*atan( Time/Bondi_Soliton_t ); + break; + +// linear function + case 2: Coeff_t = ( Time < Bondi_Soliton_t ) ? Time/Bondi_Soliton_t + : 1.0; + break; + +// smooth step function + case 3: Coeff_t = ( Time < Bondi_Soliton_t ) ? 3.0*SQR( Time/Bondi_Soliton_t ) - 2.0*CUBE( Time/Bondi_Soliton_t ) + : 1.0; + break; + +// sigmoid + case 4: Coeff_t = 2.0 / ( 1.0 + exp( -Time*log(3.0)/Bondi_Soliton_t ) ) - 1.0; + break; + +// tanh + case 5: Coeff_t = tanh( Time/Bondi_Soliton_t ); + break; + + default: + Aux_Error( ERROR_INFO, "unsupported Bondi_Soliton_type (%d) !!\n", Bondi_Soliton_type ); + } // switch ( Bondi_Soliton_type ) + + if ( Bondi_Soliton ) + { + AuxArray[5] = Coeff_t*NEWTON_G*( 4.17e9*Const_Msun/UNIT_M )/ + ( SQR( Bondi_Soliton_m22*(real)10.0 )*( Bondi_Soliton_rc*UNIT_L/Const_pc ) ); + AuxArray[6] = Bondi_Soliton_rc; + } + + else + { + AuxArray[5] = -1.0; + AuxArray[6] = -1.0; + } + } // FUNCTION : SetExtAccAuxArray_Bondi #endif // #ifndef __CUDACC__ @@ -72,13 +123,30 @@ static void ExtAcc_Bondi( real Acc[], const double x, const double y, const doub const double UserArray[] ) { - const double Cen[3] = { UserArray[0], UserArray[1], UserArray[2] }; - const real GM = (real)UserArray[3]; - const real eps = (real)UserArray[4]; - const real dx = (real)(x - Cen[0]); - const real dy = (real)(y - Cen[1]); - const real dz = (real)(z - Cen[2]); - const real r = SQRT( dx*dx + dy*dy + dz*dz ); + const double Cen[3] = { UserArray[0], UserArray[1], UserArray[2] }; + real GM = (real)UserArray[3]; + const real eps = (real)UserArray[4]; + const real GM0_sol = (real)UserArray[5]; + const real rc = (real)UserArray[6]; + const real dx = (real)(x - Cen[0]); + const real dy = (real)(y - Cen[1]); + const real dz = (real)(z - Cen[2]); + const real r = SQRT( dx*dx + dy*dy + dz*dz ); + + if ( GM0_sol > (real)0.0 && rc > (real)0.0 ) + { + const real a = SQRT( POW( (real)2.0, (real)1.0/(real)8.0 ) - (real)1.0 )*(r/rc); + const real GM_sol = (real)GM0_sol/( POW( SQR(a)+(real)1.0, (real)7.0 ) )* + ( (real) 3465*POW( a, (real)13.0 ) + +(real) 23100*POW( a, (real)11.0 ) + +(real) 65373*POW( a, (real) 9.0 ) + +(real)101376*POW( a, (real) 7.0 ) + +(real) 92323*POW( a, (real) 5.0 ) + +(real) 48580*POW( a, (real) 3.0 ) + -(real) 3465*a + +(real) 3465*POW( SQR(a)+(real)1.0, (real)7.0 )*ATAN(a) ); + GM += GM_sol; + } // if ( GM0_sol > 0.0 && rc > 0.0 ) // Plummer # if ( defined SOFTEN_PLUMMER ) diff --git a/src/TestProblem/Hydro/Bondi/Flu_ResetByUser_Bondi.cpp b/src/TestProblem/Hydro/Bondi/Flu_ResetByUser_Bondi.cpp index 9f8fffb30f..c8a6a2bb32 100644 --- a/src/TestProblem/Hydro/Bondi/Flu_ResetByUser_Bondi.cpp +++ b/src/TestProblem/Hydro/Bondi/Flu_ResetByUser_Bondi.cpp @@ -2,8 +2,7 @@ #if ( MODEL == HYDRO && defined GRAVITY ) - - +extern double Bondi_MassBH; extern double Bondi_InBC_Rho; extern double Bondi_InBC_R; extern double Bondi_InBC_E; @@ -19,6 +18,9 @@ extern double Bondi_SinkEk; extern double Bondi_SinkEt; extern int Bondi_SinkNCell; +extern bool Bondi_void; +extern bool Bondi_dynBH; + @@ -52,6 +54,9 @@ int Flu_ResetByUser_Func_Bondi( real fluid[], const double Emag, const double x, const double dt, const int lv, double AuxArray[] ) { + if ( !Bondi_void ) return false; + + const double Pos[3] = { x, y, z }; const double InBC_R2 = SQR( Bondi_InBC_R ); double dr2[3], r2; @@ -113,6 +118,8 @@ void Flu_ResetByUser_API_Bondi( const int lv, const int FluSg, const int MagSg, int Reset; real fluid[NCOMP_TOTAL], fluid_bk[NCOMP_TOTAL]; double x, y, z, x0, y0, z0; + double SinkMass_OneSubStep_ThisRank = 0.0; // variables to record sink mass at every time step + double SinkMass_OneSubStep_AllRank; // reset to 0 since we only want to record the number of void cells **for one sub-step** Bondi_SinkNCell = 0; @@ -120,7 +127,7 @@ void Flu_ResetByUser_API_Bondi( const int lv, const int FluSg, const int MagSg, # pragma omp parallel for private( Reset, fluid, fluid_bk, x, y, z, x0, y0, z0 ) schedule( runtime ) \ reduction(+:Bondi_SinkMass, Bondi_SinkMomX, Bondi_SinkMomY, Bondi_SinkMomZ, Bondi_SinkMomXAbs, Bondi_SinkMomYAbs, Bondi_SinkMomZAbs, \ - Bondi_SinkEk, Bondi_SinkEt, Bondi_SinkNCell) + Bondi_SinkEk, Bondi_SinkEt, Bondi_SinkNCell, SinkMass_OneSubStep_ThisRank ) for (int PID=0; PIDNPatchComma[lv][1]; PID++) { x0 = amr->patch[0][lv][PID]->EdgeL[0] + 0.5*dh; @@ -193,12 +200,26 @@ void Flu_ResetByUser_API_Bondi( const int lv, const int FluSg, const int MagSg, Bondi_SinkEk += dv*Ek; Bondi_SinkEt += dv*Et; Bondi_SinkNCell ++; + + SinkMass_OneSubStep_ThisRank += dv*fluid_bk[DENS]; } - } // if ( Reset ) + else if ( amr->patch[0][lv][PID]->son == -1 ) + { +// void region must be completely refined to the max level + Aux_Error( ERROR_INFO, "void region lies outside the max-level region !!\n" ); + } + } // if ( Reset ) }}} // i,j,k } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) + if ( Bondi_dynBH ) + { + MPI_Allreduce( &SinkMass_OneSubStep_ThisRank, &SinkMass_OneSubStep_AllRank, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD ); + + Bondi_MassBH += SinkMass_OneSubStep_AllRank; + } + } // FUNCTION : Flu_ResetByUser_API_Bondi diff --git a/src/TestProblem/Hydro/Bondi/Init_TestProb_Hydro_Bondi.cpp b/src/TestProblem/Hydro/Bondi/Init_TestProb_Hydro_Bondi.cpp index f57f4af155..ab63b7f307 100644 --- a/src/TestProblem/Hydro/Bondi/Init_TestProb_Hydro_Bondi.cpp +++ b/src/TestProblem/Hydro/Bondi/Init_TestProb_Hydro_Bondi.cpp @@ -4,76 +4,89 @@ // problem-specific global variables // ======================================================================================= - double Bondi_MassBH; // black hole mass -static double Bondi_Rho0; // background density -static double Bondi_T0; // background temperature - double Bondi_RefineRadius0; // refinement radius at the base level - // NOTE: refinement radius at Lv is set to Bondi_RefineRadius0*2^(-Lv) - // --> all refinement shells have roughly the same number of cells at its level - // (except Lv=MAX_LEVEL, which will have twice the number of cells along the radius - // unless Bondi_HalfMaxLvRefR is on) - bool Bondi_HalfMaxLvRefR; // halve the refinement radius at the maximum level - double Bondi_InBC_Rho; // density inside the void region -static double Bondi_InBC_T; // temperature inside the void region -static double Bondi_InBC_NCell; // number of finest cells for the radius of the void region -static double Bondi_Soften_NCell; // number of finest cells for the soften length (<=0.0 ==> disable) - - double Bondi_InBC_R; // radius of the void region (=Bondi_InBC_NCell*dh[MAX_LEVEL]) - double Bondi_InBC_P; // pressure inside the void region - double Bondi_InBC_E; // energy inside the void region - double Bondi_Soften_R; // soften length (=Bondi_Soften_NCell*dh[MAX_LEVEL]) -static double Bondi_P0; // background pressure -static double Bondi_Cs; // background sound speed -static double Bondi_RS; // Schwarzschild radius -static double Bondi_RB; // Bondi radius -static double Bondi_TimeB; // Bondi time - - double Bondi_SinkMass; // total mass in the void region removed in one global time-step - double Bondi_SinkMomX; // total x-momentum ... - double Bondi_SinkMomY; // total y-momentum ... - double Bondi_SinkMomZ; // total z-momentum ... - double Bondi_SinkMomXAbs; // total |x-momentum| ... - double Bondi_SinkMomYAbs; // total |y-momentum| ... - double Bondi_SinkMomZAbs; // total |z-momentum| ... - double Bondi_SinkEk; // total kinematic energy ... - double Bondi_SinkEt; // total thermal energy ... - int Bondi_SinkNCell; // total number of finest cells within the void region + double Bondi_MassBH; // black hole mass +static double Bondi_Rho0; // background density +static double Bondi_T0; // background temperature + double Bondi_RefineRadius0; // refinement radius at the base level + // NOTE: refinement radius at Lv is set to Bondi_RefineRadius0*2^(-Lv) + // --> all refinement shells have roughly the same number of cells at its level + // (except Lv=MAX_LEVEL, which will have twice the number of cells along the radius + // unless Bondi_HalfMaxLvRefR is on) + bool Bondi_HalfMaxLvRefR; // halve the refinement radius at the maximum level + double Bondi_InBC_Rho; // density inside the void region +static double Bondi_InBC_T; // temperature inside the void region +static double Bondi_InBC_NCell; // number of finest cells for the radius of the void region +static double Bondi_Soften_NCell; // number of finest cells for the soften length (<=0.0 ==> disable) + bool Bondi_void; // enable the void region + bool Bondi_dynBH; // dynamically increase BH mass + + double Bondi_InBC_R; // radius of the void region (=Bondi_InBC_NCell*dh[MAX_LEVEL]) + double Bondi_InBC_P; // pressure inside the void region + double Bondi_InBC_E; // energy inside the void region + double Bondi_Soften_R; // soften length (=Bondi_Soften_NCell*dh[MAX_LEVEL]) +static double Bondi_P0; // background pressure +static double Bondi_Cs; // background sound speed +static double Bondi_RS; // Schwarzschild radius +static double Bondi_RB; // Bondi radius +static double Bondi_TimeB; // Bondi time + + double Bondi_SinkMass; // total mass in the void region removed in one global time-step + double Bondi_SinkMomX; // total x-momentum ... + double Bondi_SinkMomY; // total y-momentum ... + double Bondi_SinkMomZ; // total z-momentum ... + double Bondi_SinkMomXAbs; // total |x-momentum| ... + double Bondi_SinkMomYAbs; // total |y-momentum| ... + double Bondi_SinkMomZAbs; // total |z-momentum| ... + double Bondi_SinkEk; // total kinematic energy ... + double Bondi_SinkEt; // total thermal energy ... + int Bondi_SinkNCell; // total number of finest cells within the void region // external units in cgs -const double UnitExt_L = Const_kpc; -const double UnitExt_D = 1.0; -const double UnitExt_M = Const_Msun; -const double UnitExt_E = Const_keV; +const double UnitExt_L = Const_kpc; +const double UnitExt_D = 1.0; +const double UnitExt_M = Const_Msun; +const double UnitExt_E = Const_keV; // hydrostatic equilibrium (HSE) -static bool Bondi_HSE; // enable HSE -static int Bondi_HSE_Mode; // initial configuration (1:T=Bondi_T0, 2:rho~1/r, 3:beta model) -static double Bondi_HSE_Dens_NormR; // normalize the density profile to density(r=NormR)=NormD -static double Bondi_HSE_Dens_NormD; // see Bondi_HSE_Dens_NormR +static bool Bondi_HSE; // enable HSE +static int Bondi_HSE_Mode; // initial configuration (1:T=Bondi_T0, 2:rho~1/r, 3:beta model) +static double Bondi_HSE_Dens_NormR; // normalize the density profile to density(r=NormR)=NormD +static double Bondi_HSE_Dens_NormD; // see Bondi_HSE_Dens_NormR // parameters for Bondi_HSE_Mode=1 -static int Bondi_HSE_Dens_NBin; // number of bins in the density profile table -static double Bondi_HSE_Dens_MinR; // minimum radius in the density profile -static double Bondi_HSE_Dens_MaxR; // maximum ... -static bool Bondi_HSE_Truncate; // truncate density within r adjust P2 in the pressure profile such that T(r=NormR)=Bondi_T0 -static double Bondi_HSE_Pres_NormP1; // P=P1*r^-2+P2 (P2=0 when Bondi_HSE_Pres_NormT=false) -static double Bondi_HSE_Pres_NormP2; +static bool Bondi_HSE_Pres_NormT; // true --> adjust P2 in the pressure profile such that T(r=NormR)=Bondi_T0 +static double Bondi_HSE_Pres_NormP1; // P=P1*r^-2+P2 (P2=0 when Bondi_HSE_Pres_NormT=false) +static double Bondi_HSE_Pres_NormP2; // parameters for Bondi_HSE_Mode=3 (beta model) -const double Bondi_HSE_Beta = 2.0/3.0; // beta (must be 2/3 for now) -static double Bondi_HSE_Beta_Rcore; // core radius (input parameter) -static double Bondi_HSE_Beta_Rho0; // peak density (set by Bondi_HSE_Dens_NormR/D) -static double Bondi_HSE_Beta_P1; // P(r) = P1*( 1/x + atan(x) ) + P2 assuming beta=2/3, where x=r/Rcore, -static double Bondi_HSE_Beta_P2; // P1=G*MassBH*Rho0/Rcore, and P2 currently fixed to -0.5*pi*P1 so that P(inf)=0 +const double Bondi_HSE_Beta = 2.0/3.0; // beta (must be 2/3 for now) +static double Bondi_HSE_Beta_Rcore; // core radius (input parameter) +static double Bondi_HSE_Beta_Rho0; // peak density (set by Bondi_HSE_Dens_NormR/D) +static double Bondi_HSE_Beta_P1; // P(r) = P1*( 1/x + atan(x) ) + P2 assuming beta=2/3, where x=r/Rcore, +static double Bondi_HSE_Beta_P2; // P1=G*MassBH*Rho0/Rcore, and P2 currently fixed to -0.5*pi*P1 so that P(inf)=0 + +// parameters for soliton + bool Bondi_Soliton; // add soliton external potential + double Bondi_Soliton_m22; // FDM particle mass in 1e-22 eV/c^2 for Bondi_Soliton + int Bondi_Soliton_type; // functional form for gradually introducing the soliton potential + // (0:unity, 1:arctan, 2:linear, 3:smooth step function, 4:sigmoid, 5:tanh) + double Bondi_Soliton_t; // characteristic time normalized to Bondi_TimeB for adding the soliton potential + double Bondi_Soliton_rc; // soliton radius for Bondi_Soliton + // (<0.0 --> compute from Bondi_Soliton_MassHalo/Redshift using the core-halo relation) +static double Bondi_Soliton_MassHalo; // halo mass for determining Bondi_Soliton_rc +static double Bondi_Soliton_Redshift; // redshift for determining Bondi_Soliton_rc // ======================================================================================= @@ -89,6 +102,35 @@ static void BondiBC( real Array[], const int ArraySize[], real fluid[], const in const int GhostSize, const int idx[], const double pos[], const double Time, const int lv, const int TFluVarIdxList[], double AuxArray[] ); +void SetExtAccAuxArray_Bondi( double [], const double ); + + + + +#ifdef GRAVITY +//------------------------------------------------------------------------------------------------------- +// Function : Poi_UserWorkBeforePoisson_Bondi +// Description : Call SetExtAccAuxArray_Bondi() to reset Bondi_MassBH and soliton parameters before +// invoking the Poisson solver +// +// Note : 1. Invoked by Gra_AdvanceDt() using the function pointer "Poi_UserWorkBeforePoisson_Ptr" +// +// Parameter : Time : Target physical time +// lv : Target refinement level +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Poi_UserWorkBeforePoisson_Bondi( const double Time, const int lv ) +{ + + SetExtAccAuxArray_Bondi( ExtAcc_AuxArray, Time ); + +# ifdef GPU + CUAPI_SetConstMemory_ExtAccPot(); +# endif + +} // FUNCTION : Poi_UserWorkBeforePoisson_Bondi +#endif // #ifdef GRAVITY @@ -186,31 +228,41 @@ void SetParameter() // --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type // --> some handy constants (e.g., NoMin_int, Eps_float, ...) are defined in "include/ReadPara.h" // ******************************************************************************************************************************** -// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); // ******************************************************************************************************************************** - ReadPara->Add( "Bondi_MassBH", &Bondi_MassBH, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_Rho0", &Bondi_Rho0, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_T0", &Bondi_T0, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_RefineRadius0", &Bondi_RefineRadius0, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_HalfMaxLvRefR", &Bondi_HalfMaxLvRefR, true, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_InBC_Rho", &Bondi_InBC_Rho, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_InBC_T", &Bondi_InBC_T, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_InBC_NCell", &Bondi_InBC_NCell, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_Soften_NCell", &Bondi_Soften_NCell, -1.0, NoMin_double, NoMax_double ); - - ReadPara->Add( "Bondi_HSE", &Bondi_HSE, false, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_HSE_Mode", &Bondi_HSE_Mode, 1, 1, 3 ); - ReadPara->Add( "Bondi_HSE_Dens_NBin", &Bondi_HSE_Dens_NBin, 10000, 2, NoMax_int ); - ReadPara->Add( "Bondi_HSE_Dens_MinR", &Bondi_HSE_Dens_MinR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Dens_MaxR", &Bondi_HSE_Dens_MaxR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Dens_NormR", &Bondi_HSE_Dens_NormR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Dens_NormD", &Bondi_HSE_Dens_NormD, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Truncate", &Bondi_HSE_Truncate, true, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_HSE_TrunR", &Bondi_HSE_TrunR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_TrunD", &Bondi_HSE_TrunD, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_TrunSmoothR",&Bondi_HSE_TrunSmoothR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Pres_NormT", &Bondi_HSE_Pres_NormT, false, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_HSE_Beta_Rcore", &Bondi_HSE_Beta_Rcore, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_MassBH", &Bondi_MassBH, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_Rho0", &Bondi_Rho0, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_T0", &Bondi_T0, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_RefineRadius0", &Bondi_RefineRadius0, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_HalfMaxLvRefR", &Bondi_HalfMaxLvRefR, true, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_InBC_Rho", &Bondi_InBC_Rho, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_InBC_T", &Bondi_InBC_T, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_InBC_NCell", &Bondi_InBC_NCell, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_Soften_NCell", &Bondi_Soften_NCell, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_void", &Bondi_void, true, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_dynBH", &Bondi_dynBH, false, Useless_bool, Useless_bool ); + + ReadPara->Add( "Bondi_HSE", &Bondi_HSE, false, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_HSE_Mode", &Bondi_HSE_Mode, 1, 1, 3 ); + ReadPara->Add( "Bondi_HSE_Dens_NBin", &Bondi_HSE_Dens_NBin, 10000, 2, NoMax_int ); + ReadPara->Add( "Bondi_HSE_Dens_MinR", &Bondi_HSE_Dens_MinR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Dens_MaxR", &Bondi_HSE_Dens_MaxR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Dens_NormR", &Bondi_HSE_Dens_NormR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Dens_NormD", &Bondi_HSE_Dens_NormD, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Truncate", &Bondi_HSE_Truncate, true, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_HSE_TrunR", &Bondi_HSE_TrunR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_TrunD", &Bondi_HSE_TrunD, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_TrunSmoothR", &Bondi_HSE_TrunSmoothR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Pres_NormT", &Bondi_HSE_Pres_NormT, false, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_HSE_Beta_Rcore", &Bondi_HSE_Beta_Rcore, -1.0, Eps_double, NoMax_double ); + + ReadPara->Add( "Bondi_Soliton", &Bondi_Soliton, false, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_Soliton_m22", &Bondi_Soliton_m22, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_Soliton_type", &Bondi_Soliton_type, 5, 0, 5 ); + ReadPara->Add( "Bondi_Soliton_t", &Bondi_Soliton_t, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_Soliton_rc", &Bondi_Soliton_rc, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_Soliton_MassHalo", &Bondi_Soliton_MassHalo, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_Soliton_Redshift", &Bondi_Soliton_Redshift, -1.0, NoMin_double, NoMax_double ); ReadPara->Read( FileName ); @@ -241,6 +293,14 @@ void SetParameter() Aux_Message( stderr, "WARNING : OPT__BC_FLU[%d] != BC_FLU_OUTFLOW for non-HSE setup !?\n", s ); } + if ( Bondi_Soliton ) + { + if ( Bondi_Soliton_m22 <= 0.0 ) Aux_Error( ERROR_INFO, "Bondi_Soliton_m22 (%14.7e) <= 0.0 !!\n", Bondi_Soliton_m22 ); + if ( Bondi_Soliton_t < 0.0 ) Aux_Error( ERROR_INFO, "Bondi_Soliton_t (%14.7e) < 0.0 !!\n", Bondi_Soliton_t ); + if ( Bondi_Soliton_MassHalo <= 0.0 ) Aux_Error( ERROR_INFO, "Bondi_Soliton_MassHalo (%14.7e) <= 0.0 !!\n", Bondi_Soliton_MassHalo ); + if ( Bondi_Soliton_Redshift < 0.0 ) Aux_Error( ERROR_INFO, "Bondi_Soliton_Redshift (%14.7e) < 0.0 !!\n", Bondi_Soliton_Redshift ); + } + // (2) set the problem-specific derived parameters // must initialize EoS first @@ -329,7 +389,33 @@ void SetParameter() } // if ( Bondi_HSE ) -// (4) reset other general-purpose parameters +// (4) initialize the soliton setup + if ( Bondi_Soliton ) + { +// compute the soliton radius using the core-halo relation from Eq. 7 in Schive et al., PRL 113, 261302 (2014) + if ( Bondi_Soliton_rc < 0.0 ) + { + const double z = Bondi_Soliton_Redshift; + const double Mh = Bondi_Soliton_MassHalo*UnitExt_M/Const_Msun; // convert to Msun + const double H0 = 67.66*Const_km/Const_Mpc; // hard-coded for now + const double Om0 = 0.3111; // hard-coded for now + const double a0 = Om0*SQR(H0)/( 2.47e-5*SQR( 1e7/(Const_kpc*1e3) ) ); + const double H_H0_z = 1.0/( 1.0-Om0*( 1.0-pow(1.0+z,3.0)*(1.0+z+a0)/a0 ) ); + const double Om_z = Om0*pow(1.0+z,3.0)*H_H0_z; + const double Om_0 = Om0/( 1.0-Om0*( 1.0-(1.0+a0)/a0 ) ); + const double zeta_z = ( 18.0*SQR(M_PI) + 82.0*(Om_z-1.0) - 39.0*SQR(Om_z-1.0) )/Om_z; + const double zeta_0 = ( 18.0*SQR(M_PI) + 82.0*(Om_0-1.0) - 39.0*SQR(Om_0-1.0) )/Om_0; + + Bondi_Soliton_rc = 1.6/Bondi_Soliton_m22*pow( 1.0+z, -1.0/2.0 )*pow( zeta_z/zeta_0, -1.0/6.0 )*pow( Mh/1e9, -1.0/3.0 ); // in kpc + Bondi_Soliton_rc *= Const_kpc/UnitExt_L; // convert to external units to match the manually input value + } + + Bondi_Soliton_rc *= UnitExt_L/UNIT_L; // convert to internal units + Bondi_Soliton_t *= Bondi_TimeB; // input Bondi_Soliton_t is normalized to the Bondi time + } // if ( Bondi_Soliton ) + + +// (5) reset other general-purpose parameters // --> a helper macro PRINT_RESET_PARA is defined in Macro.h const long End_Step_Default = __INT_MAX__; const double End_T_Default = 1.0e1*Bondi_TimeB; // 10 Bondi time @@ -349,40 +435,51 @@ void SetParameter() if ( MPI_Rank == 0 ) { Aux_Message( stdout, "=============================================================================\n" ); - Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); - Aux_Message( stdout, " Bondi_MassBH = %13.7e (%13.7e Msun)\n", Bondi_MassBH, Bondi_MassBH*UNIT_M/Const_Msun ); - Aux_Message( stdout, " Bondi_Rho0 = %13.7e (%13.7e g/cm^3)\n", Bondi_Rho0, Bondi_Rho0*UNIT_D ); - Aux_Message( stdout, " Bondi_T0 = %13.7e (%13.7e keV)\n", Bondi_T0, Bondi_T0*UNIT_E/Const_keV ); - Aux_Message( stdout, " Bondi_RefineRadius0 = %13.7e (%13.7e kpc)\n", Bondi_RefineRadius0, Bondi_RefineRadius0*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HalfMaxLvRefR = %s\n", (Bondi_HalfMaxLvRefR)?"YES":"NO" ); - Aux_Message( stdout, " Bondi_InBC_Rho = %13.7e (%13.7e g/cm^3)\n", Bondi_InBC_Rho, Bondi_InBC_Rho*UNIT_D ); - Aux_Message( stdout, " Bondi_InBC_T = %13.7e (%13.7e keV)\n", Bondi_InBC_T, Bondi_InBC_T*UNIT_E/Const_keV ); - Aux_Message( stdout, " Bondi_InBC_NCell = %13.7e\n", Bondi_InBC_NCell ); - Aux_Message( stdout, " Bondi_InBC_R = %13.7e (%13.7e kpc)\n", Bondi_InBC_R, Bondi_InBC_R*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_InBC_E = %13.7e\n", Bondi_InBC_E ); - Aux_Message( stdout, " Bondi_Soften_NCell = %13.7e\n", Bondi_Soften_NCell ); - Aux_Message( stdout, " Bondi_Soften_R = %13.7e (%13.7e kpc)\n", Bondi_Soften_R, Bondi_Soften_R*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_Cs = %13.7e (%13.7e km/s)\n", Bondi_Cs, Bondi_Cs*UNIT_V/Const_km ); - Aux_Message( stdout, " Schwarzschild radius = %13.7e (%13.7e kpc)\n", Bondi_RS, Bondi_RS*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi radius = %13.7e (%13.7e kpc)\n", Bondi_RB, Bondi_RB*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi time = %13.7e (%13.7e Myr)\n", Bondi_TimeB, Bondi_TimeB*UNIT_T/Const_Myr ); - - Aux_Message( stdout, " Bondi_HSE = %s\n", (Bondi_HSE)?"YES":"NO" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " Bondi_MassBH = %13.7e (%13.7e Msun)\n", Bondi_MassBH, Bondi_MassBH*UNIT_M/Const_Msun ); + Aux_Message( stdout, " Bondi_Rho0 = %13.7e (%13.7e g/cm^3)\n", Bondi_Rho0, Bondi_Rho0*UNIT_D ); + Aux_Message( stdout, " Bondi_T0 = %13.7e (%13.7e keV)\n", Bondi_T0, Bondi_T0*UNIT_E/Const_keV ); + Aux_Message( stdout, " Bondi_RefineRadius0 = %13.7e (%13.7e kpc)\n", Bondi_RefineRadius0, Bondi_RefineRadius0*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HalfMaxLvRefR = %s\n", (Bondi_HalfMaxLvRefR)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_InBC_Rho = %13.7e (%13.7e g/cm^3)\n", Bondi_InBC_Rho, Bondi_InBC_Rho*UNIT_D ); + Aux_Message( stdout, " Bondi_InBC_T = %13.7e (%13.7e keV)\n", Bondi_InBC_T, Bondi_InBC_T*UNIT_E/Const_keV ); + Aux_Message( stdout, " Bondi_InBC_NCell = %13.7e\n", Bondi_InBC_NCell ); + Aux_Message( stdout, " Bondi_InBC_R = %13.7e (%13.7e kpc)\n", Bondi_InBC_R, Bondi_InBC_R*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_InBC_E = %13.7e\n", Bondi_InBC_E ); + Aux_Message( stdout, " Bondi_Soften_NCell = %13.7e\n", Bondi_Soften_NCell ); + Aux_Message( stdout, " Bondi_Soften_R = %13.7e (%13.7e kpc)\n", Bondi_Soften_R, Bondi_Soften_R*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_Cs = %13.7e (%13.7e km/s)\n", Bondi_Cs, Bondi_Cs*UNIT_V/Const_km ); + Aux_Message( stdout, " Schwarzschild radius = %13.7e (%13.7e kpc)\n", Bondi_RS, Bondi_RS*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi radius = %13.7e (%13.7e kpc)\n", Bondi_RB, Bondi_RB*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi time = %13.7e (%13.7e Myr)\n", Bondi_TimeB, Bondi_TimeB*UNIT_T/Const_Myr ); + Aux_Message( stdout, " Bondi_void = %s\n", (Bondi_void)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_dynBH = %s\n", (Bondi_dynBH)?"YES":"NO" ); + + Aux_Message( stdout, " Bondi_HSE = %s\n", (Bondi_HSE)?"YES":"NO" ); if ( Bondi_HSE ) { - Aux_Message( stdout, " Bondi_HSE_Mode = %d\n", Bondi_HSE_Mode ); - Aux_Message( stdout, " Bondi_HSE_Dens_NBin = %d\n", Bondi_HSE_Dens_NBin ); - Aux_Message( stdout, " Bondi_HSE_Dens_MinR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_MinR, Bondi_HSE_Dens_MinR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_Dens_MaxR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_MaxR, Bondi_HSE_Dens_MaxR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_Dens_NormR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_NormR, Bondi_HSE_Dens_NormR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_Dens_NormD = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_Dens_NormD, Bondi_HSE_Dens_NormD*UNIT_D ); - Aux_Message( stdout, " Bondi_HSE_Truncate = %s\n", (Bondi_HSE_Truncate)?"YES":"NO" ); - Aux_Message( stdout, " Bondi_HSE_TrunR = %13.7e (%13.7e kpc)\n", Bondi_HSE_TrunR, Bondi_HSE_TrunR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_TrunD = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_TrunD, Bondi_HSE_TrunD*UNIT_D ); - Aux_Message( stdout, " Bondi_HSE_TrunSmoothR = %13.7e (%13.7e kpc)\n", Bondi_HSE_TrunSmoothR, Bondi_HSE_TrunSmoothR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_Pres_NormT = %s\n", (Bondi_HSE_Pres_NormT)?"YES":"NO" ); - Aux_Message( stdout, " Bondi_HSE_Beta = %13.7e\n", Bondi_HSE_Beta ); - Aux_Message( stdout, " Bondi_HSE_Beta_Rho0 = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_Beta_Rho0, Bondi_HSE_Beta_Rho0*UNIT_D ); - Aux_Message( stdout, " Bondi_HSE_Beta_Rcore = %13.7e (%13.7e kpc)\n", Bondi_HSE_Beta_Rcore, Bondi_HSE_Beta_Rcore*UNIT_L/Const_kpc ); } + Aux_Message( stdout, " Bondi_HSE_Mode = %d\n", Bondi_HSE_Mode ); + Aux_Message( stdout, " Bondi_HSE_Dens_NBin = %d\n", Bondi_HSE_Dens_NBin ); + Aux_Message( stdout, " Bondi_HSE_Dens_MinR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_MinR, Bondi_HSE_Dens_MinR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_Dens_MaxR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_MaxR, Bondi_HSE_Dens_MaxR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_Dens_NormR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_NormR, Bondi_HSE_Dens_NormR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_Dens_NormD = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_Dens_NormD, Bondi_HSE_Dens_NormD*UNIT_D ); + Aux_Message( stdout, " Bondi_HSE_Truncate = %s\n", (Bondi_HSE_Truncate)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_HSE_TrunR = %13.7e (%13.7e kpc)\n", Bondi_HSE_TrunR, Bondi_HSE_TrunR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_TrunD = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_TrunD, Bondi_HSE_TrunD*UNIT_D ); + Aux_Message( stdout, " Bondi_HSE_TrunSmoothR = %13.7e (%13.7e kpc)\n", Bondi_HSE_TrunSmoothR, Bondi_HSE_TrunSmoothR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_Pres_NormT = %s\n", (Bondi_HSE_Pres_NormT)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_HSE_Beta = %13.7e\n", Bondi_HSE_Beta ); + Aux_Message( stdout, " Bondi_HSE_Beta_Rho0 = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_Beta_Rho0, Bondi_HSE_Beta_Rho0*UNIT_D ); + Aux_Message( stdout, " Bondi_HSE_Beta_Rcore = %13.7e (%13.7e kpc)\n", Bondi_HSE_Beta_Rcore, Bondi_HSE_Beta_Rcore*UNIT_L/Const_kpc ); } + + Aux_Message( stdout, " Bondi_Soliton = %s\n", (Bondi_Soliton)?"YES":"NO" ); + if( Bondi_Soliton ) { + Aux_Message( stdout, " Bondi_Soliton_m22 = %13.7e\n", Bondi_Soliton_m22 ); + Aux_Message( stdout, " Bondi_Soliton_type = %d\n", Bondi_Soliton_type ); + Aux_Message( stdout, " Bondi_Soliton_t = %13.7e (%13.7e Myr)\n", Bondi_Soliton_t, Bondi_Soliton_t*UNIT_T/Const_Myr ); + Aux_Message( stdout, " Bondi_Soliton_rc = %13.7e (%13.7e kpc)\n", Bondi_Soliton_rc, Bondi_Soliton_rc*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_Soliton_MassHalo = %13.7e Msun\n", Bondi_Soliton_MassHalo*UnitExt_M/Const_Msun ); + Aux_Message( stdout, " Bondi_Soliton_Redshift = %13.7e\n", Bondi_Soliton_Redshift ); } Aux_Message( stdout, "=============================================================================\n" ); } // if ( MPI_Rank == 0 ) @@ -463,7 +560,6 @@ void SetGridIC( real fluid[], const double x, const double y, const double z, co Aux_Error( ERROR_INFO, "unsupported Bondi_HSE_Mode (%d) !!\n", Bondi_HSE_Mode ); } // if ( Bondi_HSE ) - // uniform background else { @@ -585,6 +681,7 @@ void HSE_SetDensProfileTable() } // FUNCTION : HSE_SetDensProfileTable + //------------------------------------------------------------------------------------------------------- // Function : End_Bondi // Description : Free memory before terminating the program @@ -665,15 +762,16 @@ void Init_TestProb_Hydro_Bondi() // set the function pointers of various problem-specific routines - Init_Function_User_Ptr = SetGridIC; - Flag_User_Ptr = Flag_Bondi; - Aux_Record_User_Ptr = Record_Bondi; - BC_User_Ptr = BondiBC; - Flu_ResetByUser_Func_Ptr = Flu_ResetByUser_Func_Bondi; - Flu_ResetByUser_API_Ptr = Flu_ResetByUser_API_Bondi; - End_User_Ptr = End_Bondi; + Init_Function_User_Ptr = SetGridIC; + Flag_User_Ptr = Flag_Bondi; + Aux_Record_User_Ptr = Record_Bondi; + BC_User_Ptr = BondiBC; + Flu_ResetByUser_Func_Ptr = Flu_ResetByUser_Func_Bondi; + Flu_ResetByUser_API_Ptr = Flu_ResetByUser_API_Bondi; + End_User_Ptr = End_Bondi; # ifdef GRAVITY - Init_ExtAcc_Ptr = Init_ExtAcc_Bondi; + Init_ExtAcc_Ptr = Init_ExtAcc_Bondi; + Poi_UserWorkBeforePoisson_Ptr = Poi_UserWorkBeforePoisson_Bondi; # endif # endif // #if ( MODEL == HYDRO && defined GRAVITY ) diff --git a/src/TestProblem/Hydro/Bondi/Record_Bondi.cpp b/src/TestProblem/Hydro/Bondi/Record_Bondi.cpp index 8dd04bc738..e597ab6981 100644 --- a/src/TestProblem/Hydro/Bondi/Record_Bondi.cpp +++ b/src/TestProblem/Hydro/Bondi/Record_Bondi.cpp @@ -6,6 +6,7 @@ // specific global variables declared in Init_TestProb_Hydro_Bondi.cpp // ======================================================================================= +extern double Bondi_MassBH; extern double Bondi_SinkMass; extern double Bondi_SinkMomX; extern double Bondi_SinkMomY; @@ -36,7 +37,8 @@ extern int Bondi_SinkNCell; void Record_Bondi() { - const char FileName[] = "Record__BondiAccretionRate"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__BondiAccretionRate", OUTPUT_DIR ); static bool FirstTime = true; static double Time0, dTime; @@ -49,10 +51,10 @@ void Record_Bondi() if ( Aux_CheckFileExist(FileName) ) Aux_Message( stderr, "WARNING : file \"%s\" already exists !!\n", FileName ); FILE *File_User = fopen( FileName, "a" ); - fprintf( File_User, "#%9s%16s%20s%20s%20s%20s%20s%20s%20s%20s%20s%20s%20s%20s\n", + fprintf( File_User, "#%9s%16s%20s%20s%20s%20s%20s%20s%20s%20s%20s%20s%20s%20s%20s\n", "Step", "Time [yr]", "NVoidCell", "Mass [Msun]", "Time [yr]", "dM/dt [Msun/yr]", "MomX [g*cm/s]", "MomY [g*cm/s]", "MomZ [g*cm/s]", "MomXAbs [g*cm/s]", "MomYAbs [g*cm/s]", "MomZAbs [g*cm/s]", - "Ek [erg]", "Et [erg]" ); + "Ek [erg]", "Et [erg]", "BHMass [Msun]" ); fclose( File_User ); } @@ -69,7 +71,7 @@ void Record_Bondi() // get the total amount of sunk variables - double Mass_Sum, MomX_Sum, MomY_Sum, MomZ_Sum, MomXAbs_Sum, MomYAbs_Sum, MomZAbs_Sum, Ek_Sum, Et_Sum; + double Mass_Sum, MomX_Sum, MomY_Sum, MomZ_Sum, MomXAbs_Sum, MomYAbs_Sum, MomZAbs_Sum, Ek_Sum, Et_Sum, Mass_BH; MPI_Reduce( &Bondi_SinkMass, &Mass_Sum, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD ); MPI_Reduce( &Bondi_SinkMomX, &MomX_Sum, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD ); @@ -90,6 +92,7 @@ void Record_Bondi() MomZAbs_Sum *= UNIT_M*UNIT_L/UNIT_T; Ek_Sum *= UNIT_E; Et_Sum *= UNIT_E; + Mass_BH = Bondi_MassBH*UNIT_M/Const_Msun; if ( MPI_Rank == 0 ) { @@ -98,9 +101,9 @@ void Record_Bondi() dTime *= UNIT_T/Const_yr; FILE *File_User = fopen( FileName, "a" ); - fprintf( File_User, "%10ld%16.7e%20d%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e\n", + fprintf( File_User, "%10ld%16.7e%20d%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e%20.7e\n", Step, Time[0]*UNIT_T/Const_yr, SinkNCell_Sum, Mass_Sum, dTime, Mass_Sum/dTime, - MomX_Sum, MomY_Sum, MomZ_Sum, MomXAbs_Sum, MomYAbs_Sum, MomZAbs_Sum, Ek_Sum, Et_Sum ); + MomX_Sum, MomY_Sum, MomZ_Sum, MomXAbs_Sum, MomYAbs_Sum, MomZAbs_Sum, Ek_Sum, Et_Sum, Mass_BH ); fclose( File_User ); } } // if ( FirstTime ) ... else ... diff --git a/src/TestProblem/Hydro/Gravity/Init_TestProb_Hydro_Gravity.cpp b/src/TestProblem/Hydro/Gravity/Init_TestProb_Hydro_Gravity.cpp index 099df0d2c3..9113c521fa 100644 --- a/src/TestProblem/Hydro/Gravity/Init_TestProb_Hydro_Gravity.cpp +++ b/src/TestProblem/Hydro/Gravity/Init_TestProb_Hydro_Gravity.cpp @@ -370,7 +370,8 @@ void Aux_Record_Gravity() if ( MPI_Rank == 0 ) { // header - const char FileName[] = "Record__PoissonPerformance"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__PoissonPerformance", OUTPUT_DIR ); if ( !Aux_CheckFileExist(FileName) ) { diff --git a/src/configure.py b/src/configure.py index 673bfd6604..09bfa94a09 100755 --- a/src/configure.py +++ b/src/configure.py @@ -18,6 +18,15 @@ +#################################################################################################### +# Validation +#################################################################################################### +# Check the Python version +if sys.version_info[0] < 3 or sys.version_info[1] < 5: + raise BaseException("Python 3.5 or later is required.") + + + #################################################################################################### # Global variables #################################################################################################### @@ -26,15 +35,17 @@ CLOSE_DIST = 2 PRINT_WIDTH = 100 -GAMER_CONFIG_DIR = os.path.join("..", "configs") -GAMER_MAKE_BASE = "Makefile_base" -GAMER_MAKE_OUT = "Makefile" -GAMER_DESCRIPTION = "Prepare a customized Makefile for GAMER.\nDefault values are marked by '*'.\nUse -lh to show a detailed help message.\n" -GAMER_EPILOG = "2023 Computational Astrophysics Lab, NTU. All rights reserved.\n" +GAMER_CONFIG_DIR = os.path.join("..", "configs") +GAMER_MAKE_BASE = "Makefile_base" +GAMER_MAKE_OUT = "Makefile" +GAMER_LOCAL_SETTING = ".local_settings" +GAMER_GLOBAL_SETTING = os.path.expanduser("~/.config/gamer/global_settings") +GAMER_DESCRIPTION = "Prepare a customized Makefile for GAMER.\nDefault values are marked by '*'.\nUse -lh to show a detailed help message.\n" +GAMER_EPILOG = "2023 Computational Astrophysics Lab, NTU. All rights reserved.\n" LOGGER = logging.getLogger() -LOG_FORMAT = '%(asctime)s %(levelname)-8s: %(message)s' -logging.basicConfig( filename=GAMER_MAKE_OUT+'.log', filemode='w', level=logging.INFO, format=LOG_FORMAT ) +LOG_FORMAT = "%(asctime)s %(levelname)-8s: %(message)s" +logging.basicConfig( filename=GAMER_MAKE_OUT+".log", filemode="w", level=logging.INFO, format=LOG_FORMAT ) @@ -45,17 +56,17 @@ class CustomFormatter( logging.Formatter ): """ See: https://stackoverflow.com/questions/384076/how-can-i-color-python-logging-output """ - HEADER = '\033[95m' - OKBLUE = '\033[94m' - OKCYAN = '\033[96m' - OKGREEN = '\033[92m' - WARNING = '\033[93m' - FAIL = '\033[91m' - ENDC = '\033[0m' - BOLD = '\033[1m' - UNDERLINE = '\033[4m' - - CONSOLE_FORMAT = '%(levelname)-8s: %(message)s' + HEADER = "\033[95m" + OKBLUE = "\033[94m" + OKCYAN = "\033[96m" + OKGREEN = "\033[92m" + WARNING = "\033[93m" + FAIL = "\033[91m" + ENDC = "\033[0m" + BOLD = "\033[1m" + UNDERLINE = "\033[4m" + + CONSOLE_FORMAT = "%(levelname)-8s: %(message)s" FORMATS = { logging.DEBUG : HEADER + CONSOLE_FORMAT + ENDC, logging.INFO : ENDC + "%(message)s" + ENDC, logging.WARNING : WARNING + CONSOLE_FORMAT + ENDC, @@ -97,7 +108,7 @@ def parse_args( self, args=None, namespace=None ): msg = "\n" for arg in argv: if arg[0] != "-": - msg += 'Unrecognized positional argument: %s\n'%(arg) + msg += "Unrecognized positional argument: %s\n"%(arg) continue arg = arg.split("=")[0] # separate the assigned value. min_dist = 100000 @@ -107,48 +118,14 @@ def parse_args( self, args=None, namespace=None ): if dist >= min_dist: continue min_dist = dist pos_key = "--"+key - msg += 'Unrecognized argument: %s'%(arg) - if min_dist <= CLOSE_DIST: msg += ', do you mean: %s ?\n'%(pos_key) - msg += '\n' - if arg == '--gpu_arch': msg += "ERROR: <--gpu_arch> is deprecated. Please set in your machine *.config file (see ../configs/template.config).\n" + msg += "Unrecognized argument: %s"%(arg) + if min_dist <= CLOSE_DIST: msg += ", do you mean: %s ?\n"%(pos_key) + msg += "\n" + if arg == "--gpu_arch": msg += "ERROR: <--gpu_arch> is deprecated. Please set in your machine *.config file (see ../configs/template.config).\n" if len(argv) != 0: self.error( msg ) return args, self.gamer_names, self.depends, self.constraints - def _get_option_tuples(self, option_string): - # This function is directly from the source code of `argparse`. - # We decided to add the function manually because versions prior to Python 3.5 do not support `allow_abbrev`. - # See: https://github.com/python/cpython/blob/main/Lib/argparse.py - result = [] - - # option strings starting with two prefix characters are only split at the '=' - chars = self.prefix_chars - if option_string[0] in chars and option_string[1] in chars: - pass # we always use `allow_abbrev=False` - - # single character options can be concatenated with their arguments - # but multiple character options always have to have their arguments separate - elif option_string[0] in chars and option_string[1] not in chars: - option_prefix = option_string - short_option_prefix = option_string[:2] - short_explicit_arg = option_string[2:] - - for option_string in self._option_string_actions: - if option_string == short_option_prefix: - action = self._option_string_actions[option_string] - tup = action, option_string, '', short_explicit_arg - result.append(tup) - elif option_string.startswith(option_prefix): - action = self._option_string_actions[option_string] - tup = action, option_string, None, None - result.append(tup) - - # shouldn't ever get here - else: - self.error(_('unexpected option string: %s') % option_string) - - return result # return the collected option tuples - def print_usage( self, *args, **kwargs ): if "usage" in self.program: print("Usage: %s\n" % self.program["usage"]) @@ -219,6 +196,48 @@ def print_help( self, *args, **kwargs ): if "print_detail" in kwargs: self.print_option() if "epilog" in self.program: print(self.program["epilog"]) +class SystemSetting( dict ): + """ + Store the system settings from the default setting file. + + Format of the setting file: + 1. Comment starts with `#`. + 2. The line begins with the variable name, followed by one or multiple spaces, and then the value. + 3. Only the fisrt value of the line will be loaded. + 4. If a variable is defined multiple times, only the last occurrence will be used. + """ + def __init__( self, *args, **kwargs ): + super().__init__( *args, **kwargs ) + + def get_default( self, key, default_val ): + return self.get( key, default_val ) + + def load( self, pathname ): + """ + Load the system settings from the default setting file. If a setting exists, + it will be overwritten. Return `False` if the file does not exist. + + Parameters: + pathname : str - The path of the default setting file to be loaded. + + Returns: + bool - Whether the file exists. + """ + if not os.path.isfile(pathname): + return False + with open( pathname, "r" ) as f: + lines = f.readlines() + for line in lines: + tokens = line.strip().split() + if len(tokens) == 0: continue # empty line + if tokens[0][0] == "#": continue # skip comment line + if len(tokens) >= 2: + self[tokens[0]] = tokens[1] + else: # key without value + self[tokens[0]] = None + + return True + #################################################################################################### @@ -290,7 +309,7 @@ def get_gpu_compute_capability(): Others: https://en.wikipedia.org/wiki/CUDA#GPUs_supported """ CUDA_SUCCESS = 0 - libnames = ('libcuda.so', 'libcuda.dylib', 'cuda.dll') + libnames = ("libcuda.so", "libcuda.dylib", "cuda.dll") for libname in libnames: try: cuda = ctypes.CDLL(libname) @@ -299,7 +318,7 @@ def get_gpu_compute_capability(): else: break else: - raise OSError("could not load any of: " + ' '.join(libnames)) + raise OSError("could not load any of: " + " ".join(libnames)) nGpus, cc_major, cc_minor, device = ctypes.c_int(), ctypes.c_int(), ctypes.c_int(), ctypes.c_int() @@ -352,11 +371,12 @@ def string_align( string, indent_str, width, end_char ): if string[i] == end_char: new_line = True return new_str -def load_arguments(): +def load_arguments( sys_setting : SystemSetting ): parser = ArgumentParser( description = GAMER_DESCRIPTION, formatter_class = argparse.RawTextHelpFormatter, epilog = GAMER_EPILOG, - add_help = False + add_help = False, + allow_abbrev=False ) parser.add_argument( "-h", "--help", @@ -372,8 +392,8 @@ def load_arguments(): # machine config setup parser.add_argument( "--machine", type=str, metavar="MACHINE", - default="eureka_intel", - help="Select the MACHINE.config file under ../configs directory.\nChoice: [eureka_intel, YOUR_MACHINE_NAME] => " + default=sys_setting.get_default( "machine", "eureka_intel" ), + help="Select the *.config file from the ../configs directory. This will overwrite the default machine specified in the default setting file.\nChoice: [eureka_intel, spock_intel, ...] => " ) # A. options of diffierent physical models @@ -699,7 +719,7 @@ def load_arguments(): ) parser.add_argument( "--rng", type=str, metavar="TYPE", gamer_name="RANDOM_NUMBER", - default="RNG_GNU_EXT", + default=None, choices=["RNG_GNU_EXT", "RNG_CPP11"], help="Select the random number generator (RNG_GNU_EXT: GNU extension drand48_r, RNG_CPP11: c++11 ).\nRNG_GNU_EXT may not be supported on some macOS.\nFor RNG_CPP11, add -std=c++11 to CXXFLAG in your config file.\n" ) @@ -740,10 +760,14 @@ def load_arguments(): def load_config( config ): LOGGER.info("Using %s as the config."%(config)) + if not os.path.isfile( config ): + raise FileNotFoundError("The config file <%s> does not exist."%(config)) + paths, compilers = {}, {"CXX":"", "CXX_MPI":""} flags = {"CXXFLAG":"", "OPENMPFLAG":"", "LIBFLAG":"", "NVCCFLAG_COM":"", "NVCCFLAG_FLU":"", "NVCCFLAG_POT":""} gpus = {"GPU_COMPUTE_CAPABILITY":""} - with open( config, 'r') as f: + + with open( config, "r" ) as f: lines = f.readlines() for line in lines: @@ -766,10 +790,10 @@ def load_config( config ): if gpus[temp[0]] != "": LOGGER.warning("The original value will be overwritten. <%s>: %s --> %s"%(temp[0], gpus[temp[0]], temp[1])) gpus[temp[0]] = temp[1] else: - try: + if len(temp) >= 2: paths[temp[0]] = temp[1] - except: - paths[temp[0]] = '' + else: # key without value + paths[temp[0]] = "" return paths, compilers, flags, gpus @@ -796,6 +820,10 @@ def set_conditional_defaults( args ): if args["barotropic"] is None: args["barotropic"] = (args["eos"] == "ISOTHERMAL") + + if args["rng"] is None: + args["rng"] = "RNG_CPP11" if sys.platform == "darwin" else "RNG_GNU_EXT" + return args def set_gpu( gpus, flags, args ): @@ -903,7 +931,7 @@ def validation( paths, depends, constraints, **kwargs ): if type(check_val) != type([]): check_val = [check_val] # transform to list if kwargs[check_opt] in check_val: continue # satisify the validation - val_str = ', '.join(str(x) for x in check_val) + val_str = ", ".join(str(x) for x in check_val) LOGGER.error("The option <--%s=%s> requires <--%s> to be set to [%s]. Current: <--%s=%s>."%(opt, str(kwargs[opt]), check_opt, val_str, check_opt, kwargs[check_opt])) success = False @@ -969,6 +997,10 @@ def validation( paths, depends, constraints, **kwargs ): LOGGER.error("<--overlap_mpi> is not supported yet.") success = False + if kwargs["rng"] != "RNG_CPP11" and sys.platform == "darwin": + LOGGER.error("<--rng=RNG_CPP11> is required for macOS.") + success = False + if not success: raise BaseException( "The above vaildation failed." ) return @@ -1013,36 +1045,41 @@ def warning( paths, **kwargs ): command = " ".join(["# This makefile is generated by the following command:", "\n#", sys.executable] + sys.argv + ["\n"]) LOGGER.info( " ".join( [sys.executable] + sys.argv ) ) - # 2. Load the input arguments - args, name_table, depends, constraints = load_arguments() + # 2. Load system settings + sys_setting = SystemSetting() + sys_setting.load(GAMER_GLOBAL_SETTING) + sys_setting.load(GAMER_LOCAL_SETTING) + + # 3. Load the input arguments + args, name_table, depends, constraints = load_arguments( sys_setting ) - # 3. Prepare the makefile args - # 3.1 Load the machine setup + # 4. Prepare the makefile args + # 4.1 Load the machine setup paths, compilers, flags, gpus = load_config( os.path.join(GAMER_CONFIG_DIR, args["machine"]+".config") ) - # 3.2 Validate arguments + # 4.2 Validate arguments validation( paths, depends, constraints, **args ) warning( paths, **args ) - # 3.3 Add the SIMU_OPTION + # 4.3 Add the SIMU_OPTION LOGGER.info("========================================") LOGGER.info("GAMER has the following setting.") LOGGER.info("----------------------------------------") sims = set_sims( name_table, depends, **args ) - # 3.4 Set the compiler + # 4.4 Set the compiler compiles = set_compile( paths, compilers, flags, args ) - # 3.5 Set the GPU + # 4.5 Set the GPU gpu_setup = set_gpu( gpus, flags, args ) - # 4. Create Makefile - # 4.1 Read + # 5. Create Makefile + # 5.1 Read with open( GAMER_MAKE_BASE, "r" ) as make_base: makefile = make_base.read() - # 4.2 Replace + # 5.2 Replace LOGGER.info("----------------------------------------") for key, val in paths.items(): LOGGER.info("%-25s : %s"%(key, val)) @@ -1071,7 +1108,7 @@ def warning( paths, **kwargs ): if num == 0: raise BaseException("The string @@@%s@@@ is not replaced correctly."%key) LOGGER.warning("@@@%s@@@ is replaced to '' since the value is not given or the related option is disabled."%key) - # 4.3 Write + # 5.3 Write with open( GAMER_MAKE_OUT, "w") as make_out: make_out.write( command + makefile ) diff --git a/tool/config/set_settings.sh b/tool/config/set_settings.sh new file mode 100644 index 0000000000..69387c766b --- /dev/null +++ b/tool/config/set_settings.sh @@ -0,0 +1,296 @@ +#!/bin/bash + +################### DEFINE KEYS ################### +# The keys can not contain spaces or start with `-` +declare -A KEY_DESCRIPTIONS +KEY_DESCRIPTIONS=( + ["machine"]="Specify the machine name" +) +################################################### + +#################### UTILITIES #################### + +# List of valid keys +VALID_KEYS=("${!KEY_DESCRIPTIONS[@]}") + +# For padding keys with trailing spaces to format output +MAX_KEY_LENGTH=0 +for key in "${VALID_KEYS[@]}"; do + if [ ${#key} -gt $MAX_KEY_LENGTH ]; then + MAX_KEY_LENGTH=${#key} + fi +done + +# Print keys in a formatted way +print_key() { + # $1 : the key name + # $2 : the key value or additional message + # $3 : indent number (optional, default 0) + printf "%${3}s" "" + printf "%-${MAX_KEY_LENGTH}s %s\n" "$1" "$2" +} + +show_valid_keys() { + echo "Valid keys and their functionalities:" + for key in "${!KEY_DESCRIPTIONS[@]}"; do + print_key "$key" "${KEY_DESCRIPTIONS[$key]}" 2 + done +} + +show_help() { + echo "Usage:" + echo " $0 (--local | --global) [-l] --= ..." + echo " $0 (--local | --global) [-l] (-d | --delete) ..." + echo " $0 (--local | --global) (-l | --list)" + echo " $0 (-h | --help)" + echo "" + echo "Options:" + echo " --local Use local settings" + echo " --global Use global settings" + echo " --= Set a parameter" + echo " -d, --delete key Delete a parameter" + echo " --clear-all Clear all parameters" + echo " -l, --list List current settings" + echo " -h, --help Show this help message" + echo "" + show_valid_keys +} + +##################### PARSER ###################### + +# Parser parameters +LOCAL=false +GLOBAL=false +LIST=false +SET=false +DELETE=false +KEYS_PROCESSED=0 +declare -A SETTINGS +DELETE_KEYS=() + +# Parser utility functions +parse_set_parameter() { + local param="$1" + local key="${param%%=*}" + if [[ "$param" != *=* ]]; then + echo "Error: Invalid format for the key '$key'. Use --$key=." >&2 + exit 1 + fi + local value="${param#*=}" + SETTINGS["$key"]="$value" +} + +parse_delete_keys() { + KEYS_PROCESSED=0 + while [[ "$#" -gt 0 && "${1:0:1}" != "-" ]]; do + DELETE_KEYS+=("$1") + shift + KEYS_PROCESSED=$((KEYS_PROCESSED + 1)) + done +} + +# Main parser loop +while [[ "$#" -gt 0 ]]; do + if [[ "${1:0:1}" = "-" && "${1:0:2}" != "--" ]]; then # Short options + opt="${1:1}" + shift + while [[ -n "$opt" ]]; do # Possibly combined + case "${opt:0:1}" in + l) LIST=true ;; + h) show_help; exit 0 ;; + d) + DELETE=true + # Put the remaining combined short options back to the argument list + # Warning: This method will only apply if all other options are not order sensitive + if [[ -n "${opt:1}" ]]; then + set -- "$@" "-$(echo "${opt:1}" | tr -d 'd')" + fi + parse_delete_keys "$@" + shift $KEYS_PROCESSED + break ;; + *) + echo "Error: Unknown option: -${opt:0:1}" >&2 + printf "$(show_help)\n" >&2 + exit 1 ;; + esac + opt="${opt:1}" + done + else # Long options + case $1 in + --local) + LOCAL=true + SETTING_TYPE="local" + SETTING_FILE="../../src/.local_settings" + shift ;; + --global) + GLOBAL=true; + SETTING_TYPE="global" + SETTING_FILE="$HOME/.config/gamer/global_settings" + shift ;; + --list) LIST=true; shift ;; + --help) show_help; exit 0 ;; + --delete) + DELETE=true + shift + parse_delete_keys "$@" + shift $KEYS_PROCESSED ;; + --clear-all) + DELETE=true + DELETE_KEYS=("${VALID_KEYS[@]}") # Set DELETE_KEYS to all valid keys + shift ;; + --*) + SET=true + parse_set_parameter "${1#--}" + shift ;; + *) + echo "Error: Unknown option: $1" >&2 + printf "$(show_help)\n" >&2 + exit 1 ;; + esac + fi +done + +############### VALIDATE PARAMETERS ############### + +# Ensure at least one operation is specified +if [ "$SET" = false ] && [ "$DELETE" = false ] && [ "$LIST" = false ]; then + echo "Error: Specify at least one operation." >&2 + printf "$(show_help)\n" >&2 + exit 1 +fi + +# Validate the keys and values for setting +if [ "$SET" = true ]; then + for key in "${!SETTINGS[@]}"; do + if [[ ! " ${VALID_KEYS[@]} " =~ " $key " ]]; then + echo "Error: Invalid key '$key'." >&2 + printf "$(show_valid_keys)\n" >&2 + exit 1 + fi + if [[ -z "${SETTINGS[$key]}" ]]; then + echo "Error: The value for the key '$key' cannot be empty. Use --$key=." >&2 + exit 1 + fi + if [[ "${SETTINGS[$key]}" =~ \ ]]; then + echo "Error: The value for the key '$key' cannot contain spaces." >&2 + exit 1 + fi + done +fi + +# Ensure mutually exclusive operations +if [ "$SET" = true ] && [ "$DELETE" = true ]; then + echo "Error: Cannot set and delete parameters at the same time." >&2 + exit 1 +fi + +# Validate the keys for deletion +if [ "$DELETE" = true ]; then + if [ ${#DELETE_KEYS[@]} -eq 0 ]; then + echo "Error: No keys specified for deletion." >&2 + exit 1 + fi + for key in "${DELETE_KEYS[@]}"; do + if [[ ! " ${VALID_KEYS[@]} " =~ " $key " ]]; then + echo "Error: Invalid key '$key' for deletion." >&2 + printf "$(show_valid_keys)\n" >&2 + exit 1 + fi + done +fi + +# Ensure either --local or --global is specified +if [ "$LOCAL" = true ] && [ "$GLOBAL" = true ]; then + echo "Error: Cannot specify both --local and --global." >&2 + exit 1 +elif [ "$LOCAL" = false ] && [ "$GLOBAL" = false ]; then + echo "Error: Specify either --local or --global." >&2 + exit 1 +fi + +################ LOAD SETTINGS FILE ############### + +cd "$(dirname "$0")" + +# Load if the settings file exists +declare -A EXISTING_SETTINGS +if [ -f "$SETTING_FILE" ]; then + while read -r LINE; do + [[ "$LINE" =~ ^#.*$ ]] && continue + key="$(echo "$LINE" | awk '{print $1}')" + value="$(echo "$LINE" | awk '{print $2}')" + EXISTING_SETTINGS["$key"]="$value" + done < "$SETTING_FILE" +fi + +################# UPDATE SETTINGS ################# + +# The head of the list +if [ "$LIST" = true ]; then # Header for listing settings + echo "$SETTING_TYPE settings in $SETTING_FILE" + echo "---------------------------" +fi + +# Main loop to update or delete settings +for key in "${VALID_KEYS[@]}"; do + old_value="${EXISTING_SETTINGS[$key]}" + new_value="${SETTINGS[$key]}" + + if [ "$SET" = true ] && [ -n "$new_value" ]; then # The key will be set + + EXISTING_SETTINGS["$key"]="$new_value" # Update or set new value + if [ "$LIST" = true ]; then + if [ -z "$old_value" ]; then + print_key "$key" "$new_value (new)" + else + print_key "$key" "$old_value -> $new_value" + fi + fi + + elif [ "$DELETE" = true ] && [[ " ${DELETE_KEYS[@]} " =~ " $key " ]]; then # The key will be deleted + + unset EXISTING_SETTINGS["$key"] # Delete the key + if [ "$LIST" = true ] && [ -n "$old_value" ]; then + print_key "$key" "$old_value -> (deleted)" + fi + + elif [ "$LIST" = true ] && [ -n "$old_value" ]; then # List the existing settings + print_key "$key" "$old_value" + fi +done +[ "$LIST" = true ] && echo "---------------------------" + +################ SAVE SETTINGS FILE ############### + +if [ "$SET" = true ] || [ "$DELETE" = true ]; then + + # Create the directory and the settings file if it doesn't exist + dir="$(dirname "$SETTING_FILE")" + if [ ! -d "$dir" ]; then + mkdir -p "$dir" + echo "Created directory $dir." + fi + if [ ! -f "$SETTING_FILE" ]; then + if touch "$SETTING_FILE"; then + echo "Created file $(basename "$SETTING_FILE") in $dir." + else + echo "Fatal: Failed to create file $(basename "$SETTING_FILE") in $dir." >&2 + exit 1 + fi + fi + + # Write updated settings to file + { + echo "# GAMER setting file" + for key in "${!EXISTING_SETTINGS[@]}"; do + print_key "${key}" "${EXISTING_SETTINGS[$key]}" + done + } > "$SETTING_FILE" + + # Check if writing to file was successful + if [ $? -ne 0 ]; then + echo "Fatal: Failed to write to '$SETTING_FILE'." >&2 + exit 1 + fi + echo "Successfully updated $SETTING_TYPE settings." +fi