diff --git a/doc/Doxyfile b/doc/Doxyfile index e9ba8098..92592451 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -822,7 +822,8 @@ WARN_LOGFILE = INPUT = $(pFlow_PROJECT_DIR)/src \ $(pFlow_PROJECT_DIR)/utilities \ $(pFlow_PROJECT_DIR)/solvers \ - mdDocs + mdDocs \ + $(pFlow_PROJECT_DIR)/tutorials # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -866,7 +867,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = $(pFlow_PROJECT_DIR)/src/phasicFlow/commandLine +EXCLUDE = $(pFlow_PROJECT_DIR)/src/phasicFlow/commandLine/CLI # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded diff --git a/doc/mdDocs/howToBuild.md b/doc/mdDocs/howToBuild.md index 7fbd8162..ce979692 100644 --- a/doc/mdDocs/howToBuild.md +++ b/doc/mdDocs/howToBuild.md @@ -123,17 +123,19 @@ After building, `bin`, `include`, and `lib` folders will be created in `~/Phasic **note 1**: When compiling the code in parallel, you need to have enough RAM on your computer. As a rule, you need 1 GB free RAM per each processor in your computer for compiling in parallel. You may want to use fewer number of cores on your computer by using the following command: + `$ make install -j 3` -the above command uses only 3 cores for compiling. + +the above command only uses 3 cores for compiling. **note 2**: By default PhasicFlow is compiled with **double** as floating point variable. You can compile it with **float**. Just in the command line of camke added `-DpFlow_Build_Double=Off` flag to compile it with float. For example if you are building for cuda, you can enter the following command: -`$ cmake ../ -DpFlow_Build_Cuda=On --DpFlow_Build_Double=Off` +`$ cmake ../ -DpFlow_Build_Cuda=On -DpFlow_Build_Double=Off` ### Step 6: Testing In the current terminal or a new terminal enter the following command: -`$ ~checkPhasicFlow` +`$ checkPhasicFlow` This command shows the host and device environments and software version. If PhasicFlow was build correctly, you would get the following output: ``` diff --git a/doc/mdDocs/howToUsePhasicFlow.md b/doc/mdDocs/howToUsePhasicFlow.md new file mode 100644 index 00000000..ca8e69db --- /dev/null +++ b/doc/mdDocs/howToUsePhasicFlow.md @@ -0,0 +1,5 @@ +# How to use PhasicFlow {#howToUsePhasicFlow} +Here you will learn how to use PhasicFlow to setup a granular flow simulation. The inputs for simulation are supplied through some text-based files, called file dictionary, located in two folders: `settings` and `caseSetup`. These folders are located under the root case directory. +All the commands are performed through terminal in which the current working directory is root case directory (you see `settings` and `caseSetup` folders when `ls` command is entered). The states of geometry and particles are stored in time folders with names that represent the time. When simulation is finished, one case use post-processing tool pFlowToVTK to convert the stored results in the time folder into VTK file format. The VTK file format can be read by Paraview. +A set of tutorials with detailed descriptions are provided to show you how to use PhasicFlow for various granular flow problems. Here is a list of them. +* [Small rotating drum] (@ref rotatingDrumSmall) diff --git a/src/phasicFlow/commandLine/CLI/Timer.hpp b/src/phasicFlow/commandLine/CLI/cliTimer.hpp similarity index 91% rename from src/phasicFlow/commandLine/CLI/Timer.hpp rename to src/phasicFlow/commandLine/CLI/cliTimer.hpp index 429ca026..d345b4bf 100644 --- a/src/phasicFlow/commandLine/CLI/Timer.hpp +++ b/src/phasicFlow/commandLine/CLI/cliTimer.hpp @@ -22,7 +22,7 @@ namespace CLI { /// This is a simple timer with pretty printing. Creating the timer starts counting. -class Timer { +class cliTimer { protected: /// This is a typedef to make clocks easier to use using clock = std::chrono::steady_clock; @@ -57,7 +57,7 @@ class Timer { public: /// Standard constructor, can set title and print function - explicit Timer(std::string title = "Timer", time_print_t time_print = Simple) + explicit cliTimer(std::string title = "cliTimer", time_print_t time_print = Simple) : title_(std::move(title)), time_print_(std::move(time_print)), start_(clock::now()) {} /// Time a function by running it multiple times. Target time is the len to target. @@ -111,17 +111,17 @@ class Timer { std::string to_string() const { return time_print_(title_, make_time_str()); } /// Division sets the number of cycles to divide by (no graphical change) - Timer &operator/(std::size_t val) { + cliTimer &operator/(std::size_t val) { cycles = val; return *this; } }; /// This class prints out the time upon destruction -class AutoTimer : public Timer { +class AutoTimer : public cliTimer { public: /// Reimplementing the constructor is required in GCC 4.7 - explicit AutoTimer(std::string title = "Timer", time_print_t time_print = Simple) : Timer(title, time_print) {} + explicit AutoTimer(std::string title = "cliTimer", time_print_t time_print = Simple) : cliTimer(title, time_print) {} // GCC 4.7 does not support using inheriting constructors. /// This destructor prints the string @@ -131,4 +131,4 @@ class AutoTimer : public Timer { } // namespace CLI /// This prints out the time if shifted into a std::cout like stream. -inline std::ostream &operator<<(std::ostream &in, const CLI::Timer &timer) { return in << timer.to_string(); } +inline std::ostream &operator<<(std::ostream &in, const CLI::cliTimer &timer) { return in << timer.to_string(); } diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/README.md b/tutorials/sphereGranFlow/rotatingDrumSmall/README.md index 300b61d8..60d0ad55 100644 --- a/tutorials/sphereGranFlow/rotatingDrumSmall/README.md +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/README.md @@ -1,3 +1,4 @@ +# Simulating a small rotating drum {#rotatingDrumSmall} ## Problem definition The problem is to simulate a rotating drum with the diameter 0.24 m and the length 0.1 m rotating at 11.6 rpm. It is filled with 30,000 4-mm spherical particles. The timestep for integration is 0.00001 s.