diff --git a/docs/source_docs/EB_Chapter.rst b/docs/source_docs/EB_Chapter.rst index 328a0c8babf3a7c1e06323c431ea4883295d5cd8..677a2b9af912f51f31e5711f3d540ab435dfa710 100644 --- a/docs/source_docs/EB_Chapter.rst +++ b/docs/source_docs/EB_Chapter.rst @@ -10,7 +10,7 @@ refining the computational meshes near walls. .. toctree:: - :maxdepth: 1 + :maxdepth: 0 :caption: Contents: eb/EBWalls diff --git a/docs/source_docs/ManagingGridHierarchy_Chapter.rst b/docs/source_docs/ManagingGridHierarchy_Chapter.rst index 0ded985eb440c16fd94239a8f21b006ab8dae601..17a8acb9429859a4001f63d160319ade9daee75f 100644 --- a/docs/source_docs/ManagingGridHierarchy_Chapter.rst +++ b/docs/source_docs/ManagingGridHierarchy_Chapter.rst @@ -32,7 +32,7 @@ tiles to OpenMP threads. See in the AMReX documentation for more about tiling. .. toctree:: - :maxdepth: 1 + :maxdepth: 0 grid/GridCreation grid/DualGrid diff --git a/docs/source_docs/Particles_Chapter.rst b/docs/source_docs/Particles_Chapter.rst index 0a3ce79bd7693f2367965c1df32258cb153a938e..f23d31937dbe06aeeddd116555fe69f3c275a8f1 100644 --- a/docs/source_docs/Particles_Chapter.rst +++ b/docs/source_docs/Particles_Chapter.rst @@ -20,7 +20,7 @@ particle-particle, particle-fluid, and particle-wall interactions. .. toctree:: - :maxdepth: 1 + :maxdepth: 0 :caption: Contents: particles/ParticleBasics diff --git a/docs/source_docs/conf.py b/docs/source_docs/conf.py index 46f5b55237fe0c8d7204f6713fed41f0deb4c0ff..b07a6620c797ac4daac9435ced32a8f31af3d1b3 100644 --- a/docs/source_docs/conf.py +++ b/docs/source_docs/conf.py @@ -34,7 +34,8 @@ import sphinx_rtd_theme extensions = ['sphinx.ext.mathjax', 'sphinx.ext.githubpages', 'sphinx.ext.viewcode', - 'sphinx_tabs.tabs'] + 'sphinx_tabs.tabs', + 'sphinx.ext.todo'] # Add any paths that contain templates here, relative to this directory. templates_path = ['ytemplates'] @@ -95,7 +96,20 @@ html_theme = 'sphinx_rtd_theme' # further. For a list of options available for each theme, see the # documentation. # -# html_theme_options = {} +html_theme_options = { + 'logo_only': False, + 'display_version': True, + 'prev_next_buttons_location': 'bottom', + 'style_external_links': False, + 'vcs_pageview_mode': '', + # Toc options + 'collapse_navigation': True, + 'sticky_navigation': True, + 'navigation_depth': 3, + 'includehidden': True, + 'titles_only': False +} + # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/docs/source_docs/fluids/FluidTimeDiscretization.rst b/docs/source_docs/fluids/FluidTimeDiscretization.rst index 2654ad8a6d92b116147367621306ec87a04a869b..e1e82655e71bb240db2f669a87e9afd40f5a4c18 100644 --- a/docs/source_docs/fluids/FluidTimeDiscretization.rst +++ b/docs/source_docs/fluids/FluidTimeDiscretization.rst @@ -4,7 +4,7 @@ Time Discretization .. toctree:: - :maxdepth: 1 + :maxdepth: 0 FluidTimeStep Slopes diff --git a/docs/source_docs/index.rst b/docs/source_docs/index.rst index 78d9cbf5a5fa2b277bdb9fe12f26621d3779c42a..7d9dc386d0a9b8e0001640564b6f1b0b2885345b 100644 --- a/docs/source_docs/index.rst +++ b/docs/source_docs/index.rst @@ -1,11 +1,11 @@ .. MFIX-Exa documentation master file, created Thu Aug 2 12:19:39 2018. .. warning:: - This documentation is a work in progress. - It is reasonably complete and hopefully useful + This documentation is a work in progress. + It is reasonably complete and hopefully useful but is likely error prone and in places misleading. - Please report any errors to the - `MFIX-Exa User Forum `_. + Please report any errors to the + `MFIX-Exa User Forum `_. Welcome to MFIX-Exa's documentation! @@ -42,30 +42,38 @@ To get started with MFIX-Exa, follow the user guide sections: :maxdepth: 1 :caption: User guide: - Introduction - GettingStarted_Chapter - Inputs_Chapter - ManagingGridHierarchy_Chapter + Introduction + Quick start guide + Run-time inputs To learn more about the implementation, follow the following reference sections: .. toctree:: - :maxdepth: 1 + :maxdepth: 0 :caption: Reference: + references/units Fluids_Chapter Particles_Chapter EB_Chapter + references/hpc Debugging +.. toctree:: + :maxdepth: 0 + :caption: Tools: + + tools/pic2dem + The following section detail the testing and benchmarks used to ensure solutions and performance: .. toctree:: - :maxdepth: 1 + :maxdepth: 0 :caption: Tests and Benchmarks: + ManagingGridHierarchy_Chapter RunningTestSuite RegressionTesting CITests diff --git a/docs/source_docs/inputs/InputsCoupling.rst b/docs/source_docs/inputs/InputsCoupling.rst deleted file mode 100644 index ad026f089e17db2e75cfce69ec79df35ad9aa253..0000000000000000000000000000000000000000 --- a/docs/source_docs/inputs/InputsCoupling.rst +++ /dev/null @@ -1,283 +0,0 @@ -Interphase Coupling -=================== - -Deposition scheme ------------------ - -The following inputs must be preceded by "mfix." - -+----------------------------+---------------------------------------------------+--------+-------------+ -| | Description | Type | Default | -+============================+===================================================+========+=============+ -| deposition_scheme | The algorithm that will be used to deposit | String | 'trilinear' | -| | particles quantities to the Eulerian grid. | | | -| | Available methods are: | | | -| | | | | -| | * 'centroid' | | | -| | * 'trilinear' | | | -| | * 'true-dpvm' divided particle volume method | | | -| | * 'trilinear-dpvm-square' dpvm with square filter | | | -+----------------------------+---------------------------------------------------+--------+-------------+ -| deposition_scale_factor | The deposition scale factor. Only applies to | Real | 1.0 | -| | 'true-dpvm' and 'trilinear-dpvm-square' methods. | | | -| | Its value must be in the interval [0, dx/2], | | | -| | where dx is the cell edge size. | | | -+----------------------------+---------------------------------------------------+--------+-------------+ -| deposition_diffusion_coeff | If a positive value is set, a diffusion equation | Real | -1.0 | -| | with this diffusion coefficient is solved to | | | -| | smooth deposited quantities. | | | -+----------------------------+---------------------------------------------------+--------+-------------+ - -In the following subsections, the four possible deposition methods are briefly -described and illustrated. - - -Centroid -~~~~~~~~ -In the centroid deposition scheme, particles' quantities are deposited only to -the Eulerian grid cell to which the particle's center belongs. - -.. raw:: latex - - \begin{center} - - .. _fig:basics:amrgrids: - -.. figure:: ./figures/centroid.jpg - :height: 2in - - Example of centroid deposition. - -.. raw:: latex - - \end{center} - - -Trilinear -~~~~~~~~~ -In the trilinear deposition scheme, particles' quantities are deposited linearly -to the eight Eulerian grid cells that surround its center. - -.. raw:: latex - - \begin{center} - - .. _fig:basics:amrgrids: - -.. figure:: ./figures/trilinear.jpg - :height: 2in - - Example of trilinear deposition. - -.. raw:: latex - - \end{center} - - -Divided Particle Volume Method (DPVM) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In the DPVM method, particles' quantities are deposited to the Eulerian grid -cells that they intersect, and the deposition weights are equal to the -percentage of the particle' volume that intersects the given cell. - -.. raw:: latex - - \begin{center} - - .. _fig:basics:amrgrids: - -.. figure:: ./figures/dpvm.jpg - :height: 2in - - Example of dpvm deposition. - -.. raw:: latex - - \end{center} - - -Square DPVM -~~~~~~~~~~~ -In the square DPVM method, particles' quantities are deposited to the Eulerian -grid similarly to the DPVM method, but with a filter applied to the deposition -scheme. - -.. raw:: latex - - \begin{center} - - .. _fig:basics:amrgrids: - -.. figure:: ./figures/square_dpvm.jpg - :height: 2in - - Example of square dpvm deposition. - -.. raw:: latex - - \end{center} - - -Drag ----- - -The following inputs must be preceded by "mfix." - -+-------------------+-----------------------------------------------------------------------+-------------+-----------+ -| | Description | Type | Default | -+===================+=======================================================================+=============+===========+ -| drag_type | Which drag model to use | String | None | -+-------------------+-----------------------------------------------------------------------+-------------+-----------+ - -The options currently supported in mfix are :cpp:`WenYu`, :cpp:`Gidaspow`, :cpp:`BVK2`, or :cpp:`UserDrag`. - -If one of these is not specified, the code will abort with - -.. highlight:: c++ - -:: - - amrex::Abort::0::"Don't know this drag type!!! - -The drag models are defined in src/src_des/des_drag_K.H - -If the user wishes to use their own drag model, they must - - * specify :cpp:`mfix.drag_type = UserDrag` in the inputs file - - * provide the code in the ComputeDragUser routine in a local usr_drag.cpp file. - An example can be found in tests/DEM06-x. - -With the variables defined as follows: - - .. code:: shell - - /* - * \brief Returns: the calculated drag coefficient. - * - * Inputs: - * EPg - gas volume fraction - * Mug - gas laminar viscosity - * ROpg - gas density * EP_g - * vrel - magnitude of gas-solids relative velocity - * DPM - particle diameter of solids phase M - * DPA - average particle diameter - * PHIS - solids volume fraction of solids phases - * fvelx - x component of the fluid velocity at the particle position - * fvely - y component of the fluid velocity at the particle position - * fvelz - z component of the fluid velocity at the particle position - * i, j, k - particle cell indices - * pid - particle id number - */ - -The :cpp:`WenYu` model is defined as - - .. code:: shell - - RE = (Mug > 0.0) ? DPM*vrel*ROPg/Mug : DEMParams::large_number; - - if (RE <= 1000.0) - { - C_d = (24.0/(RE+DEMParams::small_number)) * (1.0 + 0.15*std::pow(RE, 0.687)); - } - else - { - C_d = 0.44; - } - - if (RE < DEMParams::eps) return 0.0; - return 0.75 * C_d * vrel * ROPg * std::pow(EPg, -2.65) / DPM; - -The :cpp:`Gidaspow` model is defined as - - .. code:: shell - - ROg = ROPg / EPg; - - RE = (Mug > 0.0) ? DPM*vrel*ROPg/Mug : DEMParams::large_number; - - // Dense phase - EPg <= 0.8 - Ergun = 150.0*(1.0 - EPg)*Mug / (EPg*DPM*DPM) + 1.75*ROg*vrel/DPM; - - // Dilute phase - EPg > 0.8 - if (RE <= 1000.0) - { - C_d = (24.0/(RE+DEMParams::small_number)) * (1.0 + 0.15*std::pow(RE, 0.687)); - } - else - { - C_d = 0.44; - } - - WenYu = 0.75*C_d*vrel*ROPg*std::pow(EPg, -2.65) / DPM; - - // switch function - PHI_gs = atan(150.0*1.75*(EPg - 0.8))/M_PI / DPM; - - // blend the models - if (RE < DEMParams::eps) return 0.0; - return (1.0 - PHI_gs)*Ergun + PHI_gs*WenYu; - -The :cpp:`BVK2` model is defined as - - .. code:: shell - - amrex::Real RE = (Mug > 0.0) ? DPA*vrel*ROPg/Mug : DEMParams::large_number; - - if (RE > DEMParams::eps) - { - oEPgfour = 1.0 / EPg / EPg / EPg / EPg; - - // eq(9) BVK J. fluid. Mech. 528, 2005 - // (this F_Stokes is /= of Koch_Hill by a factor of ep_g) - F_Stokes = 18.0*Mug*EPg/DPM/DPM; - - F = 10.0*PHIS/EPg/EPg + EPg*EPg*(1.0 + 1.5*sqrt(PHIS)); - - F += RE*(0.11*PHIS*(1.0+PHIS) - 4.56e-3*oEPgfour + - std::pow(RE, -0.343)*(0.169*EPg + 6.44e-2*oEPgfour)); - - // F += 0.413*RE/(24.0*EPg*EPg) * - // (1.0/EPg + 3.0*EPg*PHIS + 8.4/std::pow(RE, 0.343)) / - // (1.0 + std::pow(10.0, 3.0*PHIS)/std::pow(RE, 0.5 + 2.0*PHIS)); - - return F*F_Stokes; - } - else - { - return 0.0; - } - - - -Heat Transfer Coefficient -------------------------- - - -The following inputs must be preceded by "mfix." - -+-------------------+---------------------------------+-------------+--------------+ -| | Description | Type | Default | -+===================+=================================+=============+==============+ -| convection_type | Which HTC model to use | String | RanzMarshall | -+-------------------+---------------------------------+-------------+--------------+ - -The options currently supported in mfix are :cpp:`RanzMarshall` (default) and :cpp:`Gunn`. -In both models the HTC is determined from a Nusslet number corelation. - -The RanzMarshall Nusselt number correlation is defined as: - - .. code:: shell - - amrex::Real N_Nu = 2.0 + 0.6 * std::sqrt(N_Re) * std::pow(N_Pr, 0.333); - - -The Gunn Nusselt number correlation is defined as: - - .. code:: shell - - amrex::Real N_Nu = - (7 - 10*EPg + 5*EPg*EPg)*(1 + .7*std::pow(N_Re, 0.2)*std::cbrt(N_Pr)) - + (1.33 - 2.4*EPg + 1.2*EPg*EPg)*std::pow(N_Re, 0.7)*std::cbrt(N_Pr); - - diff --git a/docs/source_docs/inputs/InputsDiscretization.rst b/docs/source_docs/inputs/InputsDiscretization.rst deleted file mode 100644 index 9d91fd74f81a90f1a7d59f4cb1fdd2ae7c19dbeb..0000000000000000000000000000000000000000 --- a/docs/source_docs/inputs/InputsDiscretization.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. sec:InputsDiscretization: - -Discretization -============== - -The following inputs must be preceded by "mfix." - -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| Key | Description | Type | Default | -+=================================+=======================================================================+=============+==============+ -| advection_type | Predictor-Corrector Method of Lines ("mol") or Godunov ("godunov") | String | Godunov | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| redistribution_type | Use flux ("FluxRedist"), state ("StateRedist") or no ("NoRedist") | | | -| | redistribution | String | StateRedist | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| redistribute_before_nodal_proj | Redistribute the velocity field before the nodal projection | Bool | True | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| redistribute_nodal_proj | Redistribute the velocity field after the nodal projection | Bool | False | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| use_drag_coeff_in_proj_gp | Algebraically consistent p coeff in proj or (default) simplified form | Bool | False | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| use_drag_in_godunov | Include a drag term in the Godunov flux or (default) not | Bool | False | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| correction_small_volfrac | Threshold volume fraction for correcting small cell velocity | | | -| | at the end of the predictor and corrector | Real | 1.e-4 | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| deposition_redist_type | Redistribute excess solids using max packing ("MaxPack") or state | | | -| | ("StateRedist") algorithms. | String | MaxPack | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| deposition_redist_vfrac | The threshold cell volume fraction when using "StateRedist" | | | -| | for deposition redistribution. | Real | 0.1 | -+---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ - -Notes: The code was originally developed with MOL and FluxRedist. Preliminary -tests show that the new single-step Godunov method is roughly twice as fast as -the predictor-corrector MOL at the same time step (e.g., CFL limited to 0.5). -Further, the Godunov method allows for roughly twice the time step, CFL should -be limited to 0.9 for stability. Finally, it is recommended that the Godunov -method be used in conjunction with StateRedist. While not fully vetted, early -tests also show increased stability in complex geometries for a StateRedist- -Godunov scheme compared to the previous FluxRedist-MOL scheme. - diff --git a/docs/source_docs/inputs/InputsHypre.rst b/docs/source_docs/inputs/InputsHypre.rst deleted file mode 100644 index 2d4e792ef36aafc447de87bd3e3a75fa15f931d3..0000000000000000000000000000000000000000 --- a/docs/source_docs/inputs/InputsHypre.rst +++ /dev/null @@ -1,83 +0,0 @@ -.. _Chap:InputsHypre: - -Hypre Inputs -============= - -The following inputs control the hypre settings and are read directly -by AMReX when we use hypre as the bottom solver, i.e., when -:cpp:`nodal_proj.bottom_solver = hypre` and/or when -:cpp:`mac_proj.bottom_solver = hypre` (see :ref:`Chap:InputsMultigrid`) -These settings must be preceded by the hypre_namespace setting corresponding -to the solver (see :ref:`Chap:InputsMultigrid`). - -NOTE: By default, the MAC and nodal projections use the same settings -specified with the namespace :cpp:`hypre`, however the solvers can be configured -separately by specifying :cpp:`mac_proj.hypre_namespace` and :cpp:`nodal_proj.hypre_namespace`. - -When not using the default namespace :cpp:`hypre`, additional restrictions apply: - -#. Both :cpp:`mac_proj.hypre_namespace` and :cpp:`nodal_proj.hypre_namespace` must be set. - -#. :cpp:`mac_proj.hypre_namespace` and :cpp:`nodal_proj.hypre_namespace` must be unique. - - -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| | Description | Type | Default | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| verbose | Verbosity of hypre | Int | 0 | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| adjust_singular_matrix | Should be true if the problem to be solved has singular matrix | Bool | false | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| hypre_solver | Type of hypre solver | String | BoomerAMG | -| | | | | -| | Options are BoomerAMG, GMRES, COGMRES, LGMRES, FlexGMRES, BiCGSTAB, | | | -| | PCG or Hybrid | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| hypre_preconditioner | Type of preconditioner | String | none | -| | | | | -| | Options are BoomerAMG or euclid | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| recompute_preconditioner | Recompute preconditioner during runs | Bool | true | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| write_matrix_files | Write out matrix into text files | Bool | false | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| overwrite_existing_matrix_files | Over-write existing matrix files | Bool | false | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_verbose | Verbosity of BoomerAMG preconditioner | Int | 0 | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_logging | When using BoomerAMG preconditioner | Int | 0 | -| | | | | -| | See HYPRE_BoomerAMGSetLogging | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_coarsen_type | When using BoomerAMG preconditioner | Int | 6 | -| | | | | -| | See HYPRE_BoomerAMGSetCoarsenType | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_cycle_type | When using BoomerAMG preconditioner | Int | 1 | -| | | | | -| | See HYPRE_BoomerAMGSetCycleType | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_relax_type | When using BoomerAMG preconditioner | Int | 6 | -| | | | | -| | See HYPRE_BoomerAMGSetRelaxType | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_relax_order | When using BoomerAMG preconditioner | Int | 1 | -| | | | | -| | See HYPRE_BoomerAMGSetRelaxOrder | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_num_sweeps | When using BoomerAMG preconditioner | Int | 2 | -| | | | | -| | See HYPRE_BoomerAMGSetNumSweeps | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_max_levels | When using BoomerAMG preconditioner | Int | 20 | -| | | | | -| | See HYPRE_BoomerAMGSetMaxLevels | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_strong_threshold | When using BoomerAMG preconditioner | Real | 0.57 | -| | | | | -| | See HYPRE_BoomerAMGSetStrongThreshold | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bamg_interp_type | When using BoomerAMG preconditioner | Int | 0 | -| | | | | -| | HYPRE_BoomerAMGSetInterpType | | | -+-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ diff --git a/docs/source_docs/inputs/InputsVerbosity.rst b/docs/source_docs/inputs/InputsVerbosity.rst deleted file mode 100644 index 26906f5d6a0eb42459b0995e4338d26c488352c6..0000000000000000000000000000000000000000 --- a/docs/source_docs/inputs/InputsVerbosity.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. _Chap:InputsVerbosity: - -Verbosity -========= - -The following inputs must be preceded by "mfix." - -+----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| | Description | Type | Default | -+======================+=======================================================================+=============+==============+ -| verbose | Verbosity in MFIX-Exa routines | Int | 0 | -+----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| ooo_debug | If true then print the name of the routine we are in | Bool | False | -+----------------------+-----------------------------------------------------------------------+-------------+--------------+ - diff --git a/docs/source_docs/qb/index.rst b/docs/source_docs/qb/index.rst index fe9081e9ce1173bbb313f71a975a622e5d43aeca..686fcca0c4cbeff6d039fd784692e29a314f4a44 100644 --- a/docs/source_docs/qb/index.rst +++ b/docs/source_docs/qb/index.rst @@ -17,7 +17,7 @@ can be seen in the .. toctree:: - :maxdepth: 1 + :maxdepth: 0 hcs granRT diff --git a/docs/source_docs/getting_started/Hpc.rst b/docs/source_docs/references/hpc.rst similarity index 90% rename from docs/source_docs/getting_started/Hpc.rst rename to docs/source_docs/references/hpc.rst index 337fc8c02a8757e1422fda665baa9233ffa6f756..cd56c6fe5a12b2824dd8a02004adea6173f57fc0 100644 --- a/docs/source_docs/getting_started/Hpc.rst +++ b/docs/source_docs/references/hpc.rst @@ -9,7 +9,7 @@ Follow the guide here instead of the generic instructions. .. toctree:: :caption: DOE Systems - :maxdepth: 1 + :maxdepth: 0 hpc/Frontier hpc/Summit @@ -20,14 +20,14 @@ Follow the guide here instead of the generic instructions. .. toctree:: :caption: NSF Systems - :maxdepth: 1 + :maxdepth: 0 hpc/Delta hpc/Bridges2 .. toctree:: :caption: NETL Systems - :maxdepth: 1 + :maxdepth: 0 hpc/Joule2 diff --git a/docs/source_docs/getting_started/hpc/Bridges2.rst b/docs/source_docs/references/hpc/Bridges2.rst similarity index 100% rename from docs/source_docs/getting_started/hpc/Bridges2.rst rename to docs/source_docs/references/hpc/Bridges2.rst diff --git a/docs/source_docs/getting_started/hpc/Crusher.rst b/docs/source_docs/references/hpc/Crusher.rst similarity index 100% rename from docs/source_docs/getting_started/hpc/Crusher.rst rename to docs/source_docs/references/hpc/Crusher.rst diff --git a/docs/source_docs/getting_started/hpc/Delta.rst b/docs/source_docs/references/hpc/Delta.rst similarity index 100% rename from docs/source_docs/getting_started/hpc/Delta.rst rename to docs/source_docs/references/hpc/Delta.rst diff --git a/docs/source_docs/getting_started/hpc/Frontier.rst b/docs/source_docs/references/hpc/Frontier.rst similarity index 100% rename from docs/source_docs/getting_started/hpc/Frontier.rst rename to docs/source_docs/references/hpc/Frontier.rst diff --git a/docs/source_docs/getting_started/hpc/Joule2.rst b/docs/source_docs/references/hpc/Joule2.rst similarity index 100% rename from docs/source_docs/getting_started/hpc/Joule2.rst rename to docs/source_docs/references/hpc/Joule2.rst diff --git a/docs/source_docs/getting_started/hpc/Perlmutter.rst b/docs/source_docs/references/hpc/Perlmutter.rst similarity index 100% rename from docs/source_docs/getting_started/hpc/Perlmutter.rst rename to docs/source_docs/references/hpc/Perlmutter.rst diff --git a/docs/source_docs/getting_started/hpc/Polaris.rst b/docs/source_docs/references/hpc/Polaris.rst similarity index 100% rename from docs/source_docs/getting_started/hpc/Polaris.rst rename to docs/source_docs/references/hpc/Polaris.rst diff --git a/docs/source_docs/getting_started/hpc/Summit.rst b/docs/source_docs/references/hpc/Summit.rst similarity index 100% rename from docs/source_docs/getting_started/hpc/Summit.rst rename to docs/source_docs/references/hpc/Summit.rst diff --git a/docs/source_docs/references/units.rst b/docs/source_docs/references/units.rst new file mode 100644 index 0000000000000000000000000000000000000000..55159b0def1bfa572474b9f7cc9b974851b14a5d --- /dev/null +++ b/docs/source_docs/references/units.rst @@ -0,0 +1,51 @@ +System of Units +=============== + +MFIX-Exa adopts the International System of Units (SI). Simulations have to be +set up accordingly. In the following table we provide a list of some of the +physical quantities we can specify in the input file and their correspondent +units. + ++----------------------------+-----------------------------------------+ +| Physical quantity | MFIX-Exa SI unit | ++============================+=========================================+ +| amount of substance | mole [:math:`mol`] | ++----------------------------+-----------------------------------------+ +| length | meter [:math:`m`] | ++----------------------------+-----------------------------------------+ +| mass | kilogram [:math:`kg`] | ++----------------------------+-----------------------------------------+ +| time | second [:math:`s`] | ++----------------------------+-----------------------------------------+ +| force | Newton [:math:`N`] | ++----------------------------+-----------------------------------------+ +| temperature | Kelvin [:math:`K`] | ++----------------------------+-----------------------------------------+ +| pressure | Pascal [:math:`Pa`] | ++----------------------------+-----------------------------------------+ +| energy | Joule [:math:`J`] | ++----------------------------+-----------------------------------------+ +| power | Watt [:math:`W`] | ++----------------------------+-----------------------------------------+ +| density | [:math:`kg \cdot m^{-3}`] | ++----------------------------+-----------------------------------------+ +| velocity | [:math:`m \cdot s^{-1}`] | ++----------------------------+-----------------------------------------+ +| dynamic viscosity | [:math:`Pa \cdot s`] | ++----------------------------+-----------------------------------------+ +| diffusivity | [:math:`m^2 \cdot s^{-1}`] | ++----------------------------+-----------------------------------------+ +| specific heat capacity | [:math:`J \cdot kg^{-1} \cdot K^{-1}`] | ++----------------------------+-----------------------------------------+ +| thermal conductivity | [:math:`W \cdot m^{-1} \cdot K^{-1}`] | ++----------------------------+-----------------------------------------+ +| spring coefficient | [:math:`N \cdot m^{-1}`] | ++----------------------------+-----------------------------------------+ +| molecular weight | [:math:`kg \cdot mol^{-1}`] | ++----------------------------+-----------------------------------------+ +| heat of formation | [:math:`J \cdot kg^{-1}`] | ++----------------------------+-----------------------------------------+ +| chemical reaction rate | [:math:`mol \cdot m^{-3} \cdot s^{-1}`] | ++----------------------------+-----------------------------------------+ + + diff --git a/docs/source_docs/inputs/InputsPICtoDEM.rst b/docs/source_docs/tools/pic2dem.rst similarity index 100% rename from docs/source_docs/inputs/InputsPICtoDEM.rst rename to docs/source_docs/tools/pic2dem.rst diff --git a/docs/source_docs/inputs/InputsProblemDefinition.rst b/docs/source_docs/user_guide/inputs/InputsProblemDefinition.rst similarity index 89% rename from docs/source_docs/inputs/InputsProblemDefinition.rst rename to docs/source_docs/user_guide/inputs/InputsProblemDefinition.rst index 4b3485950b667d4b4965a082cd12e2e77e9a4aa2..f5c60f543fc2e81af4d7004de03e389d2c1e0feb 100644 --- a/docs/source_docs/inputs/InputsProblemDefinition.rst +++ b/docs/source_docs/user_guide/inputs/InputsProblemDefinition.rst @@ -6,90 +6,8 @@ specify the settings of the problem at hand. The input file must be passed as first argument to the MFIX-Exa executable. -System of Units ---------------- - -MFIX-Exa adopts the International System of Units (SI). Simulations have to be -set up accordingly. In the following table we provide a list of some of the -physical quantities we can specify in the input file and their correspondent -units. - -+----------------------------+-----------------------------------------+ -| Physical quantity | MFIX-Exa SI unit | -+============================+=========================================+ -| amount of substance | mole [:math:`mol`] | -+----------------------------+-----------------------------------------+ -| length | meter [:math:`m`] | -+----------------------------+-----------------------------------------+ -| mass | kilogram [:math:`kg`] | -+----------------------------+-----------------------------------------+ -| time | second [:math:`s`] | -+----------------------------+-----------------------------------------+ -| force | Newton [:math:`N`] | -+----------------------------+-----------------------------------------+ -| temperature | Kelvin [:math:`K`] | -+----------------------------+-----------------------------------------+ -| pressure | Pascal [:math:`Pa`] | -+----------------------------+-----------------------------------------+ -| energy | Joule [:math:`J`] | -+----------------------------+-----------------------------------------+ -| power | Watt [:math:`W`] | -+----------------------------+-----------------------------------------+ -| density | [:math:`kg \cdot m^{-3}`] | -+----------------------------+-----------------------------------------+ -| velocity | [:math:`m \cdot s^{-1}`] | -+----------------------------+-----------------------------------------+ -| dynamic viscosity | [:math:`Pa \cdot s`] | -+----------------------------+-----------------------------------------+ -| diffusivity | [:math:`m^2 \cdot s^{-1}`] | -+----------------------------+-----------------------------------------+ -| specific heat capacity | [:math:`J \cdot kg^{-1} \cdot K^{-1}`] | -+----------------------------+-----------------------------------------+ -| thermal conductivity | [:math:`W \cdot m^{-1} \cdot K^{-1}`] | -+----------------------------+-----------------------------------------+ -| spring coefficient | [:math:`N \cdot m^{-1}`] | -+----------------------------+-----------------------------------------+ -| molecular weight | [:math:`kg \cdot mol^{-1}`] | -+----------------------------+-----------------------------------------+ -| heat of formation | [:math:`J \cdot kg^{-1}`] | -+----------------------------+-----------------------------------------+ -| chemical reaction rate | [:math:`mol \cdot m^{-3} \cdot s^{-1}`] | -+----------------------------+-----------------------------------------+ - - -Mesh settings -------------- - -There are some settings we can specify for the mesh and the automatic mesh -refinement algorithm. These settings must be preceded by "amr." in the input -file. - -+-------------------+---------------------------------------------------------------------+-------------+-----------+ -| | Description | Type | Default | -+===================+=====================================================================+=============+===========+ -| n_cell | Number of cells at level 0 in each coordinate direction | Ints | 0 0 0 | -+-------------------+---------------------------------------------------------------------+-------------+-----------+ -| max_level | Maximum level of refinement allowed (0 when single-level) | Int | 0 | -+-------------------+---------------------------------------------------------------------+-------------+-----------+ - - -Geometry settings ------------------ - -The following inputs must be preceded by "geometry." -+-----------------+-----------------------------------------------------------------------+-------------+-----------+ -| | Description | Type | Default | -+=================+=======================================================================+=============+===========+ -| coord_sys | 0 for Cartesian | Int | 0 | -+-----------------+-----------------------------------------------------------------------+-------------+-----------+ -| is_periodic | 1 for true, 0 for false (one value for each coordinate direction) | Ints | 0 0 0 | -+-----------------+-----------------------------------------------------------------------+-------------+-----------+ -| prob_lo | Low corner of physical domain (physical not index space) | Reals | 0 0 0 | -+-----------------+-----------------------------------------------------------------------+-------------+-----------+ -| prob_hi | High corner of physical domain (physical not index space) | Reals | 0 0 0 | -+-----------------+-----------------------------------------------------------------------+-------------+-----------+ MFIX-Exa settings @@ -101,14 +19,6 @@ The following inputs must be preceded by "mfix." +------------------------+-------------------------------------------------------------------+----------+---------------------+ | | Description | Type | Default | +========================+===================================================================+==========+=====================+ -| geometry | Which type of amrex EB geometry are we using? | String | | -| | | | | -+------------------------+-------------------------------------------------------------------+----------+---------------------+ -| geometry_filename | The CSG file that defines the EB geometry | String | | -+------------------------+-------------------------------------------------------------------+----------+---------------------+ -| levelset__refinement | Refinement factor of levelset resolution relative to level 0 | Int | 1 | -| | resolution | | | -+------------------------+-------------------------------------------------------------------+----------+---------------------+ | gravity | Gravity vector (e.g., mfix.gravity = -9.81 0.0 0.0) [required] | Reals | 0 0 0 | +------------------------+-------------------------------------------------------------------+----------+---------------------+ | advect_density | Switch for turning ON (1) or OFF (0) fluid density evolution | Int | 0 | @@ -743,10 +653,10 @@ Below is an example for specifying boundary conditions for a fluid `myfluid`. Transient Boundary Conditions ----------------------------- -Velocity, temperature, and pressure boundary conditions may also be specified as a -function of time simply by adding a new column. The time value is entered in the -new first column. We can make the `mi` boundary condition above time-dependent -by replacing: +Velocity, temperature, and pressure boundary conditions may also be specified as a +function of time simply by adding a new column. The time value is entered in the +new first column. We can make the `mi` boundary condition above time-dependent +by replacing: .. code-block:: none @@ -758,12 +668,12 @@ by replacing: bc.inflow.my_fluid.temperature = 4.0 500 bc.inflow.my_fluid.temperature = 4.01 300 -In the above example, the inflow velocity is accelerated from zero to its -final value over a period of three seconds. Linear interpolation is used in -between discrete time values and held constant at the last time value. The -temperature sees an abrupt spike from 300 up to 500 at t = 3s and then back -down again after 4s. Note that the timestep is not adjusted to sync with -transient BCs. +In the above example, the inflow velocity is accelerated from zero to its +final value over a period of three seconds. Linear interpolation is used in +between discrete time values and held constant at the last time value. The +temperature sees an abrupt spike from 300 up to 500 at t = 3s and then back +down again after 4s. Note that the timestep is not adjusted to sync with +transient BCs. Boundary Conditions on Embedded Boundaries @@ -777,7 +687,7 @@ tridimensional). We recall that, on the remaining part of the EBs, homogeneous Neumann boundary conditions are assumed by default. In the following table there is a list of the possible entries for EB boundary -conditions. Each entry must be preceded by `bc.[region0].` +conditions. Each entry must be preceded by `bc.[region0].` +---------------------+-----------------------------------------------------------------------+-------------+-----------+ | | Description | Type | Default | @@ -853,12 +763,12 @@ Below is an example where only specific cells are imposed a velocity in the x-di bc.eb-flow.my_fluid.velocity = 0.1 0.0 0.0 -Constraints +Constraints ----------- -Additional constraints may be imposed on problems which are under-determined by IBCs, -typically occurring in periodic domains. Currently, only particle constraints are supported. -The prefix `particles.` should be applied to all input keywords listed below. +Additional constraints may be imposed on problems which are under-determined by IBCs, +typically occurring in periodic domains. Currently, only particle constraints are supported. +The prefix `particles.` should be applied to all input keywords listed below. +---------------------+-----------------------------------------------------------------------+-------------+-----------+ | | Description | Type | Default | @@ -881,7 +791,7 @@ For the `mean_velocity` constraint, the following inputs can be defined. | mean_velocity_z | mean particle velocity in dir=2 | Real | Undefined | +------------------------+------------------------------------------------------------------------+-------------+-----------+ -Below is an example for zero mean particle velocity in all three directions. +Below is an example for zero mean particle velocity in all three directions. .. code-block:: none @@ -890,4 +800,4 @@ Below is an example for zero mean particle velocity in all three directions. particles.constraint.mean_velocity_x = 0. particles.constraint.mean_velocity_y = 0. particles.constraint.mean_velocity_z = 0. - + diff --git a/docs/source_docs/user_guide/inputs/advanced.rst b/docs/source_docs/user_guide/inputs/advanced.rst new file mode 100644 index 0000000000000000000000000000000000000000..7ce68e84db55df7bc20e16fc16c2cf0ef8627472 --- /dev/null +++ b/docs/source_docs/user_guide/inputs/advanced.rst @@ -0,0 +1,48 @@ +.. _Chap:InputsVerbosity: + +Advanced +======== + +Testing / debugging +------------------- + +The following inputs must be preceded by "mfix." + ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| | Description | Type | Default | ++========================+=======================================================================+=============+==============+ +| verbose | Verbosity in MFIX-Exa routines | Int | 0 | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| ooo_debug | If true then print the name of the routine we are in | Bool | False | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| only_print_grid_report | Do not time-march the simulation. Simply generate the grid report | Bool | False | +| | and exit. | | False | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ + + +The following inputs must be preceded by "amrex." + ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| | Description | Type | Default | ++========================+=======================================================================+=============+==============+ +| fpe_trap_invalid | Abort if an invalid floating point exception is encountered. | Int | 0 | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| fpe_trap_zero | Abort if a division by zero is computed. | Int | 0 | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| fpe_trap_overflow | Abort if and overflow is detected. | Int | 0 | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ + +GPU memory +---------- + +The following inputs must be preceded by "amrex." + ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| | Description | Type | Default | ++========================+=======================================================================+=============+==============+ +| the _arena_is_managed | Abort if an invalid floating point exception is encountered. | Int | 0 | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| abort_on_out_of_gpu_memory | rt if a division by zero is computed. | Int | 0 | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| the_area_init_size | Abort if and overflow is detected. | Int | 0 | ++------------------------+-----------------------------------------------------------------------+-------------+--------------+ diff --git a/docs/source_docs/user_guide/inputs/boundary_conditions.rst b/docs/source_docs/user_guide/inputs/boundary_conditions.rst new file mode 100644 index 0000000000000000000000000000000000000000..bd5a0d2a9948fadbcb6d0022fb9e7005a5efe7f5 --- /dev/null +++ b/docs/source_docs/user_guide/inputs/boundary_conditions.rst @@ -0,0 +1,196 @@ +.. _InputsBoundaryConditions: + +Boundary Conditions +=================== + + +General boundary conditions +--------------------------- + +The following inputs are defined using the ``bc`` prefix. + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| regions | Regions used to define boundary conditions. | String | None | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +The type of the boundary conditions in the BC region must be defined. + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| [region] | Used to define boundary condition type. Available options include: | String | None | +| | | | | +| | * 'pi' for pressure inflow BC type | | | +| | * 'po' for pressure outflow BC type | | | +| | * 'mi' for mass inflow BC type | | | +| | * 'nsw' for no-slip wall BC type | | | +| | * 'eb' for inhomogeneous Dirichlet BCs of temperature or fluid | | | +| | velocity (mass inflow) on the contained EBs | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| po_no_par_out | Let particles exit (default) or bounce-back at pressure outflows | Int | 0 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +Fluid settings +~~~~~~~~~~~~~~ + +For each boundary condition region, the fluid inputs are defined +using the ``bc.[region].[fluid]`` prefix. + + ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++========================+========================================================================+=============+===========+ +| volfrac | Volume fraction [required if bc_region_type='mi'] | Real | 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| density | Fluid density [required if bc_region_type='mi' or 'pi'] | Real | 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| pressure | Fluid pressure [required if bc_region_type='po' or 'pi'] | Real | 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| temperature | Fluid temperature [required if bc_region_type='mi' or 'pi'] | Real | 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| velocity | Velocity components [required if bc_region_type='mi'] | Reals | 0 0 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| delp_dir | Direction for specified pressure drop. Note that this direction | Int | 0 | +| | should also be periodic. | | | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| delp | Pressure drop (Pa) | Real | 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| species.[species0] | Species 'species0' mass fraction [required if solve_species=1 | Real | 0 | +| | and bc_region_type='mi' or 'pi']. | | | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ + +Below is an example for specifying boundary conditions for fluid (``fluid``). + +.. code-block:: none + + bc.regions = inflow outflow + + bc.inflow = mi + bc.inflow.fluid.volfrac = 1.0 + bc.inflow.fluid.density = 1.0 + bc.inflow.fluid.velocity = 0.015 0.0 0.0 + bc.inflow.fluid.temperature = 300 + bc.inflow.fluid.species.O2 = 0.0 + bc.inflow.fluid.species.CO = 0.5 + bc.inflow.fluid.species.CO2 = 0.5 + + bc.outflow = po + + bc.outflow.fluid.pressure = 0.0 + + +Transient boundary conditions +----------------------------- + +Velocity, temperature, and pressure boundary conditions may also be specified as a +function of time simply by adding a new column. The time value is entered in the +new first column. We can make the `mi` boundary condition above time-dependent +by replacing: + +.. code-block:: none + + bc.inflow.fluid.velocity = 0.0 0.0 0.0 0.0 + bc.inflow.fluid.velocity = 3.0 0.015 0.0 0.0 + + bc.inflow.fluid.temperature = 0.0 300 + bc.inflow.fluid.temperature = 2.99 300 + bc.inflow.fluid.temperature = 3.0 500 + bc.inflow.fluid.temperature = 4.0 500 + bc.inflow.fluid.temperature = 4.01 300 + +In the above example, the inflow velocity is accelerated from zero to its +final value over a period of three seconds. Linear interpolation is used in +between discrete time values and held constant at the last time value. The +temperature sees an abrupt spike from 300 up to 500 at t = 3s and then back +down again after 4s. Note that the timestep is not adjusted to sync with +transient BCs. + +.. image:: ./images/transient-bc.png + +Embedded boundary options +------------------------- + +In MFIX-Exa it is possible to set boundary conditions on the embedded +boundaries. For instance, it is possible to set inhomogeneous Dirichlet boundary +conditions for the fluid temperature variable on the subpart of the embedded +boundaries which is contained in the BC region (which in this case has to be +tridimensional). We recall that, on the remaining part of the EBs, homogeneous +Neumann boundary conditions are assumed by default. + +In the following table there is a list of the possible entries for EB boundary +conditions. Each entry must be preceded by `bc.[region0].` + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| eb.temperature | Inhomogeneous Dirichlet BC value for temperature on EBs contained in | Real | 0.0 | +| | the (tridimensional) region [required if advect_enthalpy=1 and | | | +| | bc_region_type='eb']. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +Below is an example for specifying boundary conditions for a fluid `myfluid`. + +.. code-block:: none + + bc.regions = hot-wall + + bc.hot-walls = eb + bc.hot-walls.eb.temperature = 800 + +In addition to the temperature, it is possible to set an inflow condition for fluid +on an embedeed boundary. We recall that, on the remaining part of the EBs, +no slip velocity conditions are assumed by default. + +In the following table there is a list of the possible entries for inflow EB boundary +conditions. Each entry must be preceded by `bc.[region0].` Like traditional mass +inflows, the fluid temperature, pressure, and species composition must be +provided when appropriate. + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| fluid.velocity | (Required if not `volflow`) Inflow fluid velocity on EB faces | Reals | 0 0 0 | +| | contained in the (tridimensional) region. | | | +| | Note that if only one value is specified, that is assumed to | | | +| | be the magnitude in the direction of the EB face's normal. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| fluid.volflow | (Required if not `velocity`) Inflow BC for fluid volumetric flow | Real | 0 | +| | rate in the (tridimensional) region. The flow is assumed to be | | | +| | normal to the EB surface in the region. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| fluid.volfrac | (Required) Volume fraction. | Real | 0 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| eb.normal | (Optional) When specified, only cells with EB face normal that is | Reals | 0 0 0 | +| | parallel and opposite in direction to the specified values | | | +| | are imposed with the inflow velocity. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| eb.normal_tol | (Optional) Used in conjunction with `eb.normal`. It determines the | Real | 0 | +| | tolerance (in degrees) for choosing cells with a specific normal. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +Below is an example for specifying a normal inflow velocity magnitude for a region `eb-flow`. + +.. code-block:: none + + bc.regions = eb-flow + + bc.eb-flow = eb + + bc.eb-flow.my_fluid.volfrac = 1.0 + bc.eb-flow.my_fluid.velocity = 0.1 + +Below is an example where only specific cells are imposed a velocity in the x-direction. + +.. code-block:: none + + bc.regions = eb-flow + + bc.eb-flow = eb + + bc.eb-flow.eb.normal_tol = 3.0 + bc.eb-flow.eb.normal = 0.9848 0.0000 0.1736 # 10 deg + + bc.eb-flow.my_fluid.volfrac = 1.0 + bc.eb-flow.my_fluid.velocity = 0.1 0.0 0.0 diff --git a/docs/source_docs/user_guide/inputs/chemical_reactions.rst b/docs/source_docs/user_guide/inputs/chemical_reactions.rst new file mode 100644 index 0000000000000000000000000000000000000000..73111ddf4bc13275eba96aad9e14419002b004fe --- /dev/null +++ b/docs/source_docs/user_guide/inputs/chemical_reactions.rst @@ -0,0 +1,30 @@ +Chemical Reactions +================== + +Enabling the Chemical Reactions solver and specifying model options. + ++-------------------------+----------------------------------------------------------------------+----------+-----------+ +| | Description | Type | Default | ++=========================+======================================================================+==========+===========+ +| chemistry.solve | Specified name(s) of the chemical reactions types or None to disable | String | None | +| | the reactions solver. | | | ++-------------------------+----------------------------------------------------------------------+----------+-----------+ + +The following inputs must be preceded by the "chemistry." prefix + ++------------------------+---------------------------------------------------------+----------+-----------+ +| | Description | Type | Default | ++========================+=========================================================+==========+===========+ +| [reaction0].reaction | Chemical formula for the given reaction. The string | String | None | +| | given as input must not contain white spaces and | | | +| | the reaction direction has to be specified as '-->' | | | +| | or '<--'. Chemical species phases must be defined as | | | +| | '(g)' for the fluid phase or '(s)' for the solid phase. | | | ++------------------------+---------------------------------------------------------+----------+-----------+ + +.. code-block:: none + + chemistry.solve = my_reaction0 my_reaction1 + + my_reaction0.reaction = Fe2O3(s)+CO(g)-->2.FeO(s)+CO2(g) + my_reaction1.reaction = FeO(s)+0.25O2(g)-->0.5Fe2O3(s) diff --git a/docs/source_docs/user_guide/inputs/domain.rst b/docs/source_docs/user_guide/inputs/domain.rst new file mode 100644 index 0000000000000000000000000000000000000000..f1a193318d463b4a05b3059efd4095832a83f68e --- /dev/null +++ b/docs/source_docs/user_guide/inputs/domain.rst @@ -0,0 +1,29 @@ +.. _InputsDomain: + +Defining the domain +=================== + +All simulations, whether using an embedded boundary (EB) or not, are specified on a simple cuboid domain. The +low and high corners of the cuboid are defined by the ``prob_lo`` and ``prob_hi`` inputs. + +The following inputs are defined using the ``geometry`` prefix. + ++-----------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=================+=======================================================================+=============+===========+ +| coord_sys | Coordinate system used in simulation. Only Cartesian coordinates | Int | 0 | +| | (``coord_sys = 0``) are supported. | | | ++-----------------+-----------------------------------------------------------------------+-------------+-----------+ +| is_periodic | 1 for true, 0 for false (one value for each coordinate direction) | Int | 0 0 0 | ++-----------------+-----------------------------------------------------------------------+-------------+-----------+ +| prob_lo | Low corner of physical domain (physical not index space) | Reals | 0 0 0 | ++-----------------+-----------------------------------------------------------------------+-------------+-----------+ +| prob_hi | High corner of physical domain (physical not index space) | Reals | 0 0 0 | ++-----------------+-----------------------------------------------------------------------+-------------+-----------+ + +.. attention:: + + MFIX-Exa geometry restrictions: + + * There is **no support** for 1D or 2D simulation domains. + * Cartesian is the **only supported** coordinate system. diff --git a/docs/source_docs/user_guide/inputs/fluid_model.rst b/docs/source_docs/user_guide/inputs/fluid_model.rst new file mode 100644 index 0000000000000000000000000000000000000000..caa84499f50fa594cb30cd8db6707d345c988483 --- /dev/null +++ b/docs/source_docs/user_guide/inputs/fluid_model.rst @@ -0,0 +1,76 @@ +Fluid model +=========== + +Enabling the fluid solver and specifying fluid model options. +The following inputs must be preceded by the given to the fluid solver e.g., "fluid." + ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| | Description | Type | Default | ++==========================================+==========================================================+========+==========+ +| solve | Specify the names of the fluids or None to disable the | String | None | +| | fluid solver. The name assigned to the fluid solver is | | | +| | used to specify fluids inputs. | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| molecular_weight | Value of constant fluid molecular weight | Real | 0 | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| viscosity | Specify which viscosity model to use for fluid | String | None | +| | [required]. Available options include: | | | +| | | | | +| | * 'constant' for constant viscosity model | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| viscosity.constant | Value of constant fluid viscosity [required if | Real | 0 | +| | viscosity_model='constant']. | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| specific_heat | Specify which specific heat model to use for fluid | String | None | +| | [required if advect_enthalpy]. Available options | | | +| | include: | | | +| | | | | +| | * 'constant' for constant specific heat model | | | +| | * 'mixture' required when fluid is a mixture of species | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| specific_heat.constant | Value of constant fluid specific heat [required if | Real | 0 | +| | specific_heat_model='constant']. | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| thermal_conductivity | Specify which thermal conductivity model to use for | String | None | +| | fluid [required if advect_enthalpy=1]. available | | | +| | options include: | | | +| | | | | +| | * 'constant' for constant thermal conductivity model | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| thermal_conductivity.constant | Value of constant fluid thermal conductivity [required | Real | 0 | +| | if thermal_conductivity_model='constant']. | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| thermodynamic_pressure | Value of the thermodynamic pressure [required if the | Real | 0 | +| | constraint type is IdealGasClosedSystem] | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| reference_temperature | Value of the reference temperature used for specific | Real | 0 | +| | enthalpy | Real | 0 | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| species | Specify which species can constitute the fluid phase | String | None | +| | [defined species must be a subset of the species.solve | | | +| | arguments] | | | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| newton_solver.absolute_tol | Define absolute tolerance for Damped-Newton solver | Real | 1.e-8 | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| newton_solver.relative_tol | Define relative tolerance for Damped-Newton solver | Real | 1.e-8 | ++------------------------------------------+----------------------------------------------------------+--------+----------+ +| newton_solver.max_iterations | Define max number of iterations for Damped-Newton solver | int | 500 | ++------------------------------------------+----------------------------------------------------------+--------+----------+ + +Below is an example for specifying fluid solver model options. + +.. code-block:: none + + fluid.solve = my_fluid + + fluid.viscosity = constant + fluid.viscosity.constant = 1.8e-5 + + fluid.reference_temperature = 298.15 + + fluid.thermal_conductivity = constant + fluid.thermal_conductivity.constant = 0.024 + + fluid.specific_heat = mixture + + fluid.species = O2 CO CO2 diff --git a/docs/source_docs/user_guide/inputs/geometry.rst b/docs/source_docs/user_guide/inputs/geometry.rst new file mode 100644 index 0000000000000000000000000000000000000000..cf6a04ecd254d4ae6292b8693c0e38306fbc5b6d --- /dev/null +++ b/docs/source_docs/user_guide/inputs/geometry.rst @@ -0,0 +1,92 @@ +.. _InputsGeometry: + +Specifying a geometry +===================== + +The following inputs are defined using the ``mfix`` prefix. + ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| | Description | Type | Default | ++========================+===================================================================+==========+=====================+ +| geometry | Select a predefined EB geometry | String | '' | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| geometry_filename | The CSG file that defines the EB geometry | String | '' | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| levelset__refinement | Refinement factor of levelset resolution relative to level 0 | Int | 1 | +| | resolution | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ + +Most simulations require a user to specify some kind of geometry. For example, the geometry could be a basic cylinder used to +model flow inside a pipe, or it may be an irregularly shaped solid to study external flow around a bluff body, or the geometry +may be the proposed design of a complex, multi-stage chemical reactor undergoing performance assessment. In the following sections, +several options for specifying a geometry are described. + +.. caution:: + + Any domain extent that is not periodic or defined as a Dirichlet or Neumann :ref:`boundary condition` + must be fully covered. To state this another way, if a domain extent is not periodic or an inflow or outflow boundary condition, + then it should be excluded from (outside of) the domain by the embedded boundary geometry. + + +Pre-defined geometries +---------------------- + +The ``mfix.geometry`` input is used to choose one of the basic pre-defined geometries, or to +select the option to use a user-defined geometry constructed from native AMReX implicit functions. + + +Constructive solid geometry +--------------------------- + +Use the ``mfix.geometry_filename`` input to select a *constructive solid geometry (CSG)* that defines +the system geometry. + + +Regions and boundary conditions +------------------------------- + +Simple geometries can be created by combining planar :ref:`regions` and no-slip wall +:ref:`boundary conditions`. The ``mfix.geometry`` and ``mfix.geometry_file`` +inputs should remain undefined when using this method. + +In the following example, the domain is periodic in the *x-* and *z-* directions; therefore, +walls only need to cover the low and high *xz* faces. First, ``wall1`` and ``wall2`` are defined +in the ``regions`` section, then they are used to specify two no-slip wall boundary conditions. + +.. code-block:: bash + :caption: Example geometry created using regions and boundary conditions. + :name: define_geometry_with_regions + + # Define periodicity and domain extents + # ------------------------------------------------------------- + geometry.coord_sys = 0 + geometry.is_periodic = 1 0 1 + geometry.prob_lo = 0. 0. 0. + geometry.prob_hi = 0.01 0.01 0.005 + + # Define two planar regions + # ------------------------------------------------------------- + mfix.regions = wall1 wall2 + + regions.wall1.lo = 0.000 1.25e-6 0.000 + regions.wall1.hi = 0.010 1.25e-6 0.005 + + regions.wall2.lo = 0.000 9.99875e-3 0.000 + regions.wall2.hi = 0.010 9.99875e-3 0.005 + + # Use the regions to define no-slip wall boundaries + # ------------------------------------------------------------- + bc.regions = wall1 wall2 + + bc.wall1 = nsw + bc.wall1.normal = 0.0 1.0 0.0 + + bc.wall2 = nsw + bc.wall2.normal = 0.0 -1.0 0.0 + +.. caution:: + + It is highly recommended that planar regions not be defined coincident to domain + boundaries. It is better to specify planes slightly offset from the domain as + demonstrated in the :ref:`above example`. + diff --git a/docs/source_docs/inputs/figures/centroid.jpg b/docs/source_docs/user_guide/inputs/images/centroid.jpg similarity index 100% rename from docs/source_docs/inputs/figures/centroid.jpg rename to docs/source_docs/user_guide/inputs/images/centroid.jpg diff --git a/docs/source_docs/inputs/figures/dpvm.jpg b/docs/source_docs/user_guide/inputs/images/dpvm.jpg similarity index 100% rename from docs/source_docs/inputs/figures/dpvm.jpg rename to docs/source_docs/user_guide/inputs/images/dpvm.jpg diff --git a/docs/source_docs/inputs/figures/square_dpvm.jpg b/docs/source_docs/user_guide/inputs/images/square_dpvm.jpg similarity index 100% rename from docs/source_docs/inputs/figures/square_dpvm.jpg rename to docs/source_docs/user_guide/inputs/images/square_dpvm.jpg diff --git a/docs/source_docs/user_guide/inputs/images/transient-bc.png b/docs/source_docs/user_guide/inputs/images/transient-bc.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5d38cb6d3d38e4142fe78d866120c93eb59c01 Binary files /dev/null and b/docs/source_docs/user_guide/inputs/images/transient-bc.png differ diff --git a/docs/source_docs/inputs/figures/trilinear.jpg b/docs/source_docs/user_guide/inputs/images/trilinear.jpg similarity index 100% rename from docs/source_docs/inputs/figures/trilinear.jpg rename to docs/source_docs/user_guide/inputs/images/trilinear.jpg diff --git a/docs/source_docs/user_guide/inputs/initial_conditions.rst b/docs/source_docs/user_guide/inputs/initial_conditions.rst new file mode 100644 index 0000000000000000000000000000000000000000..82933487989a81e24e5e12ee86899dca6150368b --- /dev/null +++ b/docs/source_docs/user_guide/inputs/initial_conditions.rst @@ -0,0 +1,215 @@ +Initial Conditions +================== + +The following inputs are defined using the ``ic`` prefix. + ++-----------------------+------------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=======================+========================================================================+=============+===========+ +| regions | Regions used to define initial conditions. | String | None | ++-----------------------+------------------------------------------------------------------------+-------------+-----------+ +| allow_regions_overlap | Flag for allowing the user to decide whether particles will be | Bool | 1 (yes) | +| | generated/initialized more than once on the areas where the IC regions | | | +| | have an intersection | | | ++-----------------------+------------------------------------------------------------------------+-------------+-----------+ +| ranking_type | IC regions are sorted during initialization. This input lets the user | String | Inputs | +| | decide the ranking criterion, which can be one of the following: | | | +| | | | | +| | * inputs -- the order in the inputs file | | | +| | * volume -- the volume of each IC region | | | +| | * priority -- the priority value provided by the user in the inputs | | | ++-----------------------+------------------------------------------------------------------------+-------------+-----------+ + + +Fluid settings +~~~~~~~~~~~~~~ + +For each initial condition region, the fluid inputs are defined +using the ``ic.[region].[fluid]`` compound prefix. + ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++========================+========================================================================+=============+===========+ +| volfrac | Volume fraction [required] | Real | 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| density | Fluid density | Real | 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| temperature | Fluid temperature | Real | 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| velocity | Velocity components | Reals | 0 0 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| species.[species0] | Mass fraction of 'species0' | Reals | 0 0 0 | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ + + + +Solids settings +~~~~~~~~~~~~~~~ + +For each initial condition region, general solids inputs are defined +using the ``ic.[region]`` compound prefix. + ++----------------------+------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++======================+==================================================================+=============+===========+ +| solids | Name of solid type in IC region -- only one solid is allowed in | String | None | +| | an IC region. | | | ++----------------------+------------------------------------------------------------------+-------------+-----------+ +| packing | Specifies how auto-generated particles are placed in the IC | String | None | +| | region: | | | +| | | | | +| | * hcp -- hex-centered packing | | | +| | * pseudo_random -- random packing using a fixed random seed | | | +| | * random -- random packing (not repeatable) | | | +| | * oneper -- one particle per cell | | | +| | * eightper -- eight particles per cell | | | +| | * n-cube -- n^3 particles per cell where n is an integer | | | +| | | | | +| | (NOTE: oneper is equivalent to 1-cube and eightper to 2-cube) | | | ++----------------------+------------------------------------------------------------------+-------------+-----------+ +| priority | Priority value for IC regions ranking as described above | Int | Max | ++----------------------+------------------------------------------------------------------+-------------+-----------+ + +For each initial condition region, the solid inputs are defined +using the ``ic.[region].[solid]`` compound prefix. + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| volfrac | Volume fraction | Real | 0 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| temperature | temperature | Real | 0 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| species.[species0] | Mass fraction of 'species0' | Real | 0 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| velocity | Velocity components | Reals | 0 0 0 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| diameter | Method to specify particle diameter in the IC region. This is | String | None | +| | only used for auto-generated particles. Available options include: | | | +| | | | | +| | * 'constant' -- specified constant | | | +| | * 'uniform' -- uniform distribution | | | +| | * 'normal' -- normal distribution | | | +| | * 'custom' -- user defined distribution | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| diameter.constant | Monodisperse (single valued) particle diameter. | Real | 0 | +| | Required for ``constant`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| diameter.mean | Distribution mean. | Real | 0 | +| | Required for ``normal`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| diameter.std | Distribution standard deviation. | Real | 0 | +| | Required for ``normal`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| diameter.min | Minimum diameter to clip distribution. | Real | 0 | +| | Required for ``normal`` distributions and ``uniform`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| diameter.max | Maximum diameter to clip distribution. | Real | 0 | +| | Required for ``normal`` distributions and ``uniform`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| diameter.custom | File name that specifies either the cumulative or probability | String | None | +| | distribution. Required for ``custom`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| density | Method to specify particle density in the IC region. This is | String | None | +| | only used for auto-generated particles. Available options include: | | | +| | | | | +| | * 'constant' -- specified constant | | | +| | * 'uniform' -- uniform distribution | | | +| | * 'normal' -- normal distribution | | | +| | * 'custom' -- user defined distribution | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| density.constant | Monodisperse (single valued) particle density. | Real | 0 | +| | Required for ``constant`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| density.mean | Distribution mean. | Real | 0 | +| | Required for ``normal`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| density.std | Distribution standard deviation. | Real | 0 | +| | Required for ``normal`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| density.min | Minimum diameter to clip distribution. | Real | 0 | +| | Required for ``normal`` distributions and ``uniform`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| density.max | Maximum diameter to clip distribution. | Real | 0 | +| | Required for ``normal`` distributions and ``uniform`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| density.custom | File name that specifies either the cumulative or probability | String | None | +| | distribution. Required for ``custom`` distributions. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +The following inputs must be preceded by ``mfix``: + ++----------------------+-----------------------------------------------------------------------+-------------+--------------+ +| | Description | Type | Default | ++======================+=======================================================================+=============+==============+ +| particle_init_type | How do we initialize the particles? "Auto" vs AsciiFile | String | AsciiFile | ++----------------------+-----------------------------------------------------------------------+-------------+--------------+ + + +The following inputs must be preceded by ``particles``: + ++--------------------+---------------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++====================+===========================================================================+=============+===========+ +| removeOutOfRange | Flag to remove particles at initialization that are touching a wall | Int | 1 | ++--------------------+---------------------------------------------------------------------------+-------------+-----------+ + + +Below is an example for specifying an initial condition for a fluid (``fluid``) and one solid (``solid0``). + +.. code-block:: none + + mfix.particle_init_type = Auto + + particles.removeOutOfRange = 1 + + ic.regions = bed0 bed1 + + ic.bed0.fluid.volfrac = 0.725 + ic.bed0.fluid.density = 1.0 + ic.bed0.fluid.velocity = 0.015 0.00 0.00 + ic.bed0.fluid.temperature = 383.0 + ic.bed0.fluid.species.CO = 0.3 + ic.bed0.fluid.species.CO2 = 0.2 + ic.bed0.fluid.species.O2 = 0.5 + + ic.bed0.solids = my_solid0 + + ic.bed0.packing = pseudo_random + + ic.bed0.my_solid0.volfrac = 0.275 + ic.bed0.my_solid0.temperature = 400.0 + ic.bed0.my_solid0.species.Fe2O3 = 0.4 + ic.bed0.my_solid0.species.FeO = 0.6 + + ic.bed0.my_solid0.velocity = 0.00 0.00 0.00 + + ic.bed0.my_solid0.diameter = constant + ic.bed0.my_solid0.diameter.constant = 100.0e-6 + + ic.bed0.my_solid0.density = constant + ic.bed0.my_solid0.density.constant = 1000.0 + + ic.bed1.fluid.volfrac = 0.925 + ic.bed1.fluid.density = 1.0 + ic.bed1.fluid.velocity = 0.015 0.00 0.00 + ic.bed1.fluid.temperature = 383.0 + ic.bed1.fluid.species.CO = 0.5 + ic.bed1.fluid.species.CO2 = 0.5 + ic.bed1.fluid.species.O2 = 0.0 + + ic.bed1.solids = solid0 + ic.bed1.packing = pseudo_random + + ic.bed1.solid0.volfrac = 0.075 + ic.bed1.solid0.temperature = 450.0 + ic.bed1.solid0.species.Fe2O3 = 0.0 + ic.bed1.solid0.species.FeO = 1.0 + + ic.bed1.solid0.velocity = 0.10 0.00 0.00 + + ic.bed1.solid0.diameter = constant + ic.bed1.solid0.diameter.constant = 110.0e-6 + + ic.bed1.solid0.density = constant + ic.bed1.solid0.density.constant = 900.0 diff --git a/docs/source_docs/inputs/InputsInitialization.rst b/docs/source_docs/user_guide/inputs/initialization.rst similarity index 63% rename from docs/source_docs/inputs/InputsInitialization.rst rename to docs/source_docs/user_guide/inputs/initialization.rst index e2c41842e730eb9099c3f9b95c4334de15d8cb17..d57f102a1a0baf450a5f570fe339292d06275973 100644 --- a/docs/source_docs/inputs/InputsInitialization.rst +++ b/docs/source_docs/user_guide/inputs/initialization.rst @@ -3,38 +3,31 @@ Initialization ============== -The following inputs must be preceded by "mfix." and determine how we initialize a calculation: +The following inputs must be preceded by ``mfix`` and determine how we initialize a calculation: +----------------------+-----------------------------------------------------------------------+-------------+--------------+ | | Description | Type | Default | +======================+=======================================================================+=============+==============+ -| restart | If set, then restart from this file rather than from scratch | String | None | +| do_initial_proj | Preform an initial projection | Bool | True | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| repl_x | Replicate initial data by this factor in the x-direction | Int | 1 | +| initial_iterations | Number of pressure iterations to execute before time-marching | Int | 3 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| repl_y | Replicate initial data by this factor in the y-direction | Int | 1 | + + +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| repl_z | Replicate initial data by this factor in the z-direction | Int | 1 | +| | Description | Type | Default | ++======================+=======================================================================+=============+==============+ +| restart | If set, then restart from this file rather than from scratch | String | None | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -The following inputs must be preceded by "mfix." and determine how we initialize a calculation: +----------------------+-----------------------------------------------------------------------+-------------+--------------+ | | Description | Type | Default | +======================+=======================================================================+=============+==============+ +| repl_x | Replicate initial data by this factor in the x-direction | Int | 1 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| particle_init_type | How do we initialize the particles? "Auto" vs AsciiFile | String | AsciiFile | -+----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| do_initial_proj | Should we do the initial projection? | Bool | True | +| repl_y | Replicate initial data by this factor in the y-direction | Int | 1 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| initial_iterations | How many pressure iterations before starting the first timestep | Int | 3 | +| repl_z | Replicate initial data by this factor in the z-direction | Int | 1 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ - -The following inputs must be preceded by "particles.": - -+--------------------+---------------------------------------------------------------------------+-------------+-----------+ -| | Description | Type | Default | -+====================+===========================================================================+=============+===========+ -| removeOutOfRange | Should we remove particles at initialization that are touching the wall | Int | 1 | -+--------------------+---------------------------------------------------------------------------+-------------+-----------+ diff --git a/docs/source_docs/inputs/InputsLoadBalancing.rst b/docs/source_docs/user_guide/inputs/mesh_and_gridding.rst similarity index 82% rename from docs/source_docs/inputs/InputsLoadBalancing.rst rename to docs/source_docs/user_guide/inputs/mesh_and_gridding.rst index f7c386eecddd5e232d37af36f24f23bbd3ddf7df..96f6d3fc3f84dcaf65c4b59a647bdf9b47e5c5e9 100644 --- a/docs/source_docs/inputs/InputsLoadBalancing.rst +++ b/docs/source_docs/user_guide/inputs/mesh_and_gridding.rst @@ -1,27 +1,22 @@ -.. role:: cpp(code) - :language: c++ +.. sec:InputsMeshAndGridding: -.. _Chap:InputsLoadBalancing: +Mesh and gridding +================= -Gridding and Load Balancing -=========================== +Mesh, grids and tiles +--------------------- -The following inputs must be preceded by "amr." and determine how we create the grids. +Mesh +^^^^ + +There are some settings we can specify for the mesh and the automatic mesh +refinement algorithm. These settings must be preceded by "amr." in the input +file. +----------------------+-----------------------------------------------------------------------+-------------+-----------+ | | Description | Type | Default | +======================+=======================================================================+=============+===========+ -| max_grid_size_x | Maximum number of cells at level 0 in each grid in x-direction | Int | 32 | -+----------------------+-----------------------------------------------------------------------+-------------+-----------+ -| max_grid_size_y | Maximum number of cells at level 0 in each grid in y-direction | Int | 32 | -+----------------------+-----------------------------------------------------------------------+-------------+-----------+ -| max_grid_size_z | Maximum number of cells at level 0 in each grid in z-direction | Int | 32 | -+----------------------+-----------------------------------------------------------------------+-------------+-----------+ -| blocking_factor_x | Each grid must be divisible by blocking_factor_x in x-direction | Int | 8 | -+----------------------+-----------------------------------------------------------------------+-------------+-----------+ -| blocking_factor_y | Each grid must be divisible by blocking_factor_y in y-direction | Int | 8 | -+----------------------+-----------------------------------------------------------------------+-------------+-----------+ -| blocking_factor_z | Each grid must be divisible by blocking_factor_z in z-direction | Int | 8 | +| max_level | Maximum level of refinement allowed (0 when single-level) | Int | 0 | +----------------------+-----------------------------------------------------------------------+-------------+-----------+ | grid_eff | Threshold value to ensure grids do not contain too large a fraction | Real | 0.7 | | | of un-tagged cells. | | | @@ -31,24 +26,30 @@ The following inputs must be preceded by "amr." and determine how we create the | | to ensure coarse/fine boundaries are not too close to tagged cells. | | | | | Applicable only when mesh refinement is enabled ("max_level" > 0). | | | +----------------------+-----------------------------------------------------------------------+-------------+-----------+ +| n_cell | Number of cells at level 0 in each coordinate direction | Ints | 0 0 0 | ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ + +Grids +^^^^^ -The following inputs must be preceded by "mfix." and determine how often we regrid. +The following inputs must be preceded by "amr." and determine how we create the grids. +----------------------+-----------------------------------------------------------------------+-------------+-----------+ | | Description | Type | Default | +======================+=======================================================================+=============+===========+ -| regrid_int | How often to regrid (in number of steps at level 0) | Int | -1 | -| | if regrid_int = -1 then no regridding will occur | | | +| max_grid_size_x | Maximum number of cells at level 0 in each grid in x-direction | Int | 32 | ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ +| max_grid_size_y | Maximum number of cells at level 0 in each grid in y-direction | Int | 32 | ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ +| max_grid_size_z | Maximum number of cells at level 0 in each grid in z-direction | Int | 32 | ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ +| blocking_factor_x | Each grid must be divisible by blocking_factor_x in x-direction | Int | 8 | ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ +| blocking_factor_y | Each grid must be divisible by blocking_factor_y in y-direction | Int | 8 | ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ +| blocking_factor_z | Each grid must be divisible by blocking_factor_z in z-direction | Int | 8 | +----------------------+-----------------------------------------------------------------------+-------------+-----------+ -The following inputs must be preceded by "fabarray_mfiter." and determine how we create the logical tiles: - -+----------------------+-----------------------------------------------------------------------+----------+-------------+ -| | Description | Type | Default | -+======================+=======================================================================+==========+=============+ -| tile_size | Maximum number of cells in each direction for (logical) tiles | IntVect | 1024000 | -| | (3D CPU-only) | | 1024000,8,8 | -+----------------------+-----------------------------------------------------------------------+----------+-------------+ The following inputs must be preceded by "particles." @@ -64,12 +65,31 @@ The following inputs must be preceded by "particles." | max_grid_size_z | Maximum number of cells at level 0 in each grid in z-direction | Int | 32 | | | for grids in the ParticleBoxArray if dual_grid is true. | | | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ + +Tiles +^^^^^ + +The following inputs must be preceded by "fabarray_mfiter." and determine how we create the logical tiles: + ++----------------------+-----------------------------------------------------------------------+----------+-------------+ +| | Description | Type | Default | ++======================+=======================================================================+==========+=============+ +| tile_size | Maximum number of cells in each direction for (logical) tiles | IntVect | 1024000 | +| | (3D CPU-only) | | 1024000,8,8 | ++----------------------+-----------------------------------------------------------------------+----------+-------------+ + +The following inputs must be preceded by "particles." + ++----------------------+-----------------------------------------------------------------------+-------------+--------------+ +| | Description | Type | Default | ++======================+=======================================================================+=============+==============+ | tile_size | Maximum number of cells in each direction for (logical) tiles | IntVect | 1024000,8,8 | | | in the ParticleBoxArray if dual_grid is true. | | | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| reduceGhostParticles | Remove unused ghost particles from communication, | Bool | True | -| | only supported by GPU build | | | -+----------------------+-----------------------------------------------------------------------+-------------+--------------+ + + +Load balancing +-------------- Note that when running a granular simulation, i.e., no fluid phase, :cpp:`mfix.dual_grid` must be 0. Hence, the :cpp:`particles.max_grid_size` (in each direction) have no meaning. Therefore the fluid grid and tile @@ -83,6 +103,9 @@ The following inputs must be preceded by "mfix." and determine how we load balan +======================+=======================================================================+=============+==============+ | dual_grid | If true then use the "dual_grid" approach for load balancing | Bool | False | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ +| regrid_int | How often to regrid (in number of steps at level 0) | Int | -1 | +| | if regrid_int = -1 then no regridding will occur | | | ++----------------------+-----------------------------------------------------------------------+-------------+--------------+ | load_balance_fluid | Only relevant if (dual_grid); if so do we also regrid mesh data | Int | 0 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ | load_balance_type | What strategy to use for load balancing | String | KnapSack | @@ -109,11 +132,24 @@ The following inputs must be preceded by "mfix." and determine how we load balan | | disjoined grids | | | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -\* The greedy partitioning algorithm uses the tolerances to set the expected -workload range for each rank but doesn't strictly enforce them. The algorithm -creates a partition as balance as possible even if the partition doesn't +\* The greedy partitioning algorithm uses the tolerances to set the expected +workload range for each rank but doesn't strictly enforce them. The algorithm +creates a partition as balance as possible even if the partition doesn't meet the tolerances. -To allow a user to verify the breakdown of fluid grids created before running a full simulation, an input option, -:cpp:`mfix.only_print_grid_report` is supported. By default, it is :cpp:`False`. When set to :cpp:`True`, the run uses +To allow a user to verify the breakdown of fluid grids created before running a full simulation, an input option, +:cpp:`mfix.only_print_grid_report` is supported. By default, it is :cpp:`False`. When set to :cpp:`True`, the run uses minimal memory to print the grid coverage report and exits immediately after that. + + +.. todo:: Is this needed anymore? + + The following inputs must be preceded by "particles." + + +----------------------+-----------------------------------------------------------------------+-------------+--------------+ + | | Description | Type | Default | + +======================+=======================================================================+=============+==============+ + | reduceGhostParticles | Remove unused ghost particles from communication, | Bool | True | + | | only supported by GPU build | | | + +----------------------+-----------------------------------------------------------------------+-------------+--------------+ + diff --git a/docs/source_docs/user_guide/inputs/model_options.rst b/docs/source_docs/user_guide/inputs/model_options.rst new file mode 100644 index 0000000000000000000000000000000000000000..63cc06c93402561328c24665e54ae1a84de12d1c --- /dev/null +++ b/docs/source_docs/user_guide/inputs/model_options.rst @@ -0,0 +1,397 @@ +Model options +============= + +In this section it is described how the input file can be configured in order to +specify the settings of the problem at hand. The input file must be +passed as first argument to the MFIX-Exa executable. + + +The following inputs must be preceded by "mfix." + ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| | Description | Type | Default | ++========================+===================================================================+==========+=====================+ +| gravity | Gravity vector (e.g., mfix.gravity = -9.81 0.0 0.0) [required] | Reals | 0 0 0 | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| advect_density | Switch for turning ON (1) or OFF (0) fluid density evolution | Int | 0 | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| advect_enthalpy | Switch for turning ON (1) or OFF (0) fluid temperature evolution | Int | 0 | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| solve_species | Switch for turning ON (1) or OFF (0) fluid species mass fraction | Int | 0 | +| | evolution | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| constraint_type | Select which constraint to apply to the problem. | String | IncompressibleFluid | +| | Available options include: | | | +| | | | | +| | * 'incompressiblefluid' for incompressibility constraint | | | +| | * 'idealgasopensystem' for Ideal Gas-Open System constraint | | | +| | * 'idealgasclosedsystem' for Ideal Gas-Closed System constraint | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ + + +Fluid discretization +-------------------- + +The following inputs must be preceded by "mfix." + ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| Key | Description | Type | Default | ++=================================+=======================================================================+=============+==============+ +| advection_type | Predictor-Corrector Method of Lines ("mol") or Godunov ("godunov") | String | Godunov | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| redistribution_type | Use flux ("FluxRedist"), state ("StateRedist") or no ("NoRedist") | | | +| | redistribution | String | StateRedist | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| redistribute_before_nodal_proj | Redistribute the velocity field before the nodal projection | Bool | True | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| redistribute_nodal_proj | Redistribute the velocity field after the nodal projection | Bool | False | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| use_drag_coeff_in_proj_gp | Algebraically consistent p coeff in proj or (default) simplified form | Bool | False | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| use_drag_in_godunov | Include a drag term in the Godunov flux or (default) not | Bool | False | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| correction_small_volfrac | Threshold volume fraction for correcting small cell velocity | | | +| | at the end of the predictor and corrector | Real | 1.e-4 | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ + +Notes: The code was originally developed with MOL and FluxRedist. Preliminary +tests show that the new single-step Godunov method is roughly twice as fast as +the predictor-corrector MOL at the same time step (e.g., CFL limited to 0.5). +Further, the Godunov method allows for roughly twice the time step, CFL should +be limited to 0.9 for stability. Finally, it is recommended that the Godunov +method be used in conjunction with StateRedist. While not fully vetted, early +tests also show increased stability in complex geometries for a StateRedist- +Godunov scheme compared to the previous FluxRedist-MOL scheme. + + +Additional constraitns +---------------------- + +Additional constraints may be imposed on problems which are under-determined by IBCs, +typically occurring in periodic domains. Currently, only particle constraints are supported. +The prefix `particles.` should be applied to all input keywords listed below. + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| constraint | Constraint type. Available options include: | String | None | +| | | | | +| | * 'mean_velocity' | | | +| | | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +For the `mean_velocity` constraint, the following inputs can be defined. + ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++========================+========================================================================+=============+===========+ +| mean_velocity_x | mean particle velocity in dir=0 | Real | Undefined | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| mean_velocity_y | mean particle velocity in dir=1 | Real | Undefined | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ +| mean_velocity_z | mean particle velocity in dir=2 | Real | Undefined | ++------------------------+------------------------------------------------------------------------+-------------+-----------+ + +Below is an example for zero mean particle velocity in all three directions. + +.. code-block:: none + + particles.constraint = "mean_velocity" + + particles.constraint.mean_velocity_x = 0. + particles.constraint.mean_velocity_y = 0. + particles.constraint.mean_velocity_z = 0. + + +Deposition scheme +----------------- + +The following inputs must be preceded by "mfix." + ++----------------------------+---------------------------------------------------+--------+-------------+ +| | Description | Type | Default | ++============================+===================================================+========+=============+ +| deposition_scheme | The algorithm that will be used to deposit | String | 'trilinear' | +| | particles quantities to the Eulerian grid. | | | +| | Available methods are: | | | +| | | | | +| | * 'centroid' | | | +| | * 'trilinear' | | | +| | * 'true-dpvm' divided particle volume method | | | +| | * 'trilinear-dpvm-square' dpvm with square filter | | | ++----------------------------+---------------------------------------------------+--------+-------------+ +| deposition_scale_factor | The deposition scale factor. Only applies to | Real | 1.0 | +| | 'true-dpvm' and 'trilinear-dpvm-square' methods. | | | +| | Its value must be in the interval [0, dx/2], | | | +| | where dx is the cell edge size. | | | ++----------------------------+---------------------------------------------------+--------+-------------+ +| deposition_diffusion_coeff | If a positive value is set, a diffusion equation | Real | -1.0 | +| | with this diffusion coefficient is solved to | | | +| | smooth deposited quantities. | | | ++----------------------------+---------------------------------------------------+--------+-------------+ + +In the following subsections, the four possible deposition methods are briefly +described and illustrated. + + +Centroid +~~~~~~~~ +In the centroid deposition scheme, particles' quantities are deposited only to +the Eulerian grid cell to which the particle's center belongs. + +.. raw:: latex + + \begin{center} + + .. _fig:basics:amrgrids: + +.. figure:: ./images/centroid.jpg + :height: 2in + + Example of centroid deposition. + +.. raw:: latex + + \end{center} + + +Trilinear +~~~~~~~~~ +In the trilinear deposition scheme, particles' quantities are deposited linearly +to the eight Eulerian grid cells that surround its center. + +.. raw:: latex + + \begin{center} + + .. _fig:basics:amrgrids: + +.. figure:: ./images/trilinear.jpg + :height: 2in + + Example of trilinear deposition. + +.. raw:: latex + + \end{center} + + +Divided Particle Volume Method (DPVM) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In the DPVM method, particles' quantities are deposited to the Eulerian grid +cells that they intersect, and the deposition weights are equal to the +percentage of the particle' volume that intersects the given cell. + +.. raw:: latex + + \begin{center} + + .. _fig:basics:amrgrids: + +.. figure:: ./images/dpvm.jpg + :height: 2in + + Example of dpvm deposition. + +.. raw:: latex + + \end{center} + + +Square DPVM +~~~~~~~~~~~ +In the square DPVM method, particles' quantities are deposited to the Eulerian +grid similarly to the DPVM method, but with a filter applied to the deposition +scheme. + +.. raw:: latex + + \begin{center} + + .. _fig:basics:amrgrids: + +.. figure:: ./images/square_dpvm.jpg + :height: 2in + + Example of square dpvm deposition. + +.. raw:: latex + + \end{center} + + + + +The following inputs must be preceded by "mfix." + ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| Key | Description | Type | Default | ++=================================+=======================================================================+=============+==============+ +| deposition_redist_type | Redistribute excess solids using max packing ("MaxPack") or state | | | +| | ("StateRedist") algorithms. | String | MaxPack | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| deposition_redist_vfrac | The threshold cell volume fraction when using "StateRedist" | | | +| | for deposition redistribution. | Real | 0.1 | ++---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ + + + +Drag models +----------- + +The following inputs must be preceded by "mfix." + ++-------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++===================+=======================================================================+=============+===========+ +| drag_type | Which drag model to use | String | None | ++-------------------+-----------------------------------------------------------------------+-------------+-----------+ + +The options currently supported in mfix are :cpp:`WenYu`, :cpp:`Gidaspow`, :cpp:`BVK2`, or :cpp:`UserDrag`. + +If one of these is not specified, the code will abort with + +.. highlight:: c++ + +:: + + amrex::Abort::0::"Don't know this drag type!!! + +The drag models are defined in src/src_des/des_drag_K.H + +If the user wishes to use their own drag model, they must + + * specify :cpp:`mfix.drag_type = UserDrag` in the inputs file + + * provide the code in the ComputeDragUser routine in a local usr_drag.cpp file. + An example can be found in tests/DEM06-x. + +With the variables defined as follows: + + .. code:: shell + + EPg - gas volume fraction + Mug - gas laminar viscosity + ROpg - gas density * EP_g + vrel - magnitude of gas-solids relative velocity + DPM - particle diameter of solids phase M + DPA - average particle diameter + PHIS - solids volume fraction of solids phases + fvelx - x component of the fluid velocity at the particle position + fvely - y component of the fluid velocity at the particle position + fvelz - z component of the fluid velocity at the particle position + i, j, k - particle cell indices + pid - particle id number + + +The :cpp:`WenYu` model is defined as + + .. code:: shell + + RE = (Mug > 0.0) ? DPM*vrel*ROPg/Mug : DEMParams::large_number; + + if (RE <= 1000.0) + { + C_d = (24.0/(RE+DEMParams::small_number)) * (1.0 + 0.15*std::pow(RE, 0.687)); + } + else + { + C_d = 0.44; + } + + if (RE < DEMParams::eps) return 0.0; + return 0.75 * C_d * vrel * ROPg * std::pow(EPg, -2.65) / DPM; + +The :cpp:`Gidaspow` model is defined as + + .. code:: shell + + ROg = ROPg / EPg; + + RE = (Mug > 0.0) ? DPM*vrel*ROPg/Mug : DEMParams::large_number; + + // Dense phase - EPg <= 0.8 + Ergun = 150.0*(1.0 - EPg)*Mug / (EPg*DPM*DPM) + 1.75*ROg*vrel/DPM; + + // Dilute phase - EPg > 0.8 + if (RE <= 1000.0) + { + C_d = (24.0/(RE+DEMParams::small_number)) * (1.0 + 0.15*std::pow(RE, 0.687)); + } + else + { + C_d = 0.44; + } + + WenYu = 0.75*C_d*vrel*ROPg*std::pow(EPg, -2.65) / DPM; + + // switch function + PHI_gs = atan(150.0*1.75*(EPg - 0.8))/M_PI / DPM; + + // blend the models + if (RE < DEMParams::eps) return 0.0; + return (1.0 - PHI_gs)*Ergun + PHI_gs*WenYu; + +The :cpp:`BVK2` model is defined as + + .. code:: shell + + amrex::Real RE = (Mug > 0.0) ? DPA*vrel*ROPg/Mug : DEMParams::large_number; + + if (RE > DEMParams::eps) + { + oEPgfour = 1.0 / EPg / EPg / EPg / EPg; + + // eq(9) BVK J. fluid. Mech. 528, 2005 + // (this F_Stokes is /= of Koch_Hill by a factor of ep_g) + F_Stokes = 18.0*Mug*EPg/DPM/DPM; + + F = 10.0*PHIS/EPg/EPg + EPg*EPg*(1.0 + 1.5*sqrt(PHIS)); + + F += RE*(0.11*PHIS*(1.0+PHIS) - 4.56e-3*oEPgfour + + std::pow(RE, -0.343)*(0.169*EPg + 6.44e-2*oEPgfour)); + + // F += 0.413*RE/(24.0*EPg*EPg) * + // (1.0/EPg + 3.0*EPg*PHIS + 8.4/std::pow(RE, 0.343)) / + // (1.0 + std::pow(10.0, 3.0*PHIS)/std::pow(RE, 0.5 + 2.0*PHIS)); + + return F*F_Stokes; + } + else + { + return 0.0; + } + + + +Heat transfer coefficients +-------------------------- + + +The following inputs must be preceded by "mfix." + ++-------------------+---------------------------------+-------------+--------------+ +| | Description | Type | Default | ++===================+=================================+=============+==============+ +| convection_type | Which HTC model to use | String | RanzMarshall | ++-------------------+---------------------------------+-------------+--------------+ + +The options currently supported in mfix are :cpp:`RanzMarshall` (default) and :cpp:`Gunn`. +In both models the HTC is determined from a Nusslet number corelation. + +The RanzMarshall Nusselt number correlation is defined as: + + .. code:: shell + + amrex::Real N_Nu = 2.0 + 0.6 * std::sqrt(N_Re) * std::pow(N_Pr, 0.333); + + +The Gunn Nusselt number correlation is defined as: + + .. code:: shell + + amrex::Real N_Nu = + (7 - 10*EPg + 5*EPg*EPg)*(1 + .7*std::pow(N_Re, 0.2)*std::cbrt(N_Pr)) + + (1.33 - 2.4*EPg + 1.2*EPg*EPg)*std::pow(N_Re, 0.7)*std::cbrt(N_Pr); + + diff --git a/docs/source_docs/inputs/InputsMultigrid.rst b/docs/source_docs/user_guide/inputs/multigrid-solvers.rst similarity index 53% rename from docs/source_docs/inputs/InputsMultigrid.rst rename to docs/source_docs/user_guide/inputs/multigrid-solvers.rst index 6caaad50d0e4ad87c33dfc08f8eaf11ab1deee0e..9a6b9a0977d241b4abffc610954ca82bf165a21d 100644 --- a/docs/source_docs/inputs/InputsMultigrid.rst +++ b/docs/source_docs/user_guide/inputs/multigrid-solvers.rst @@ -1,15 +1,19 @@ .. _Chap:InputsMultigrid: -Multigrid Inputs -================ +Multigrid solvers +================= -The following inputs can be set directly in the AMReX solver classes but we -set them via the MFIX-Exa routines because we may want different inputs for the -different solvers called by MFIX-Exa. -NOTE: the nodal solver settings are read in directly by AMReX, -the MAC and diffusion settings by MFIX-Exa. +The following inputs can be set directly in the AMReX solver classes but we +set them via the MFIX-Exa routines because we may want different inputs for the +different solvers called by MFIX-Exa. -These control the nodal projection and must be preceded by "nodal_proj.": +Nodal projection +---------------- + +NOTE: the nodal solver settings are read in directly by AMReX, +the MAC and diffusion settings by MFIX-Exa. + +These control the nodal projection and must be preceded by "nodal_proj.": +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | | Description | Type | Default | @@ -18,30 +22,34 @@ These control the nodal projection and must be preceded by "nodal_proj.": +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | bottom_verbose | Verbosity of BiCGStab solver in nodal projection | Int | 0 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| mg_rtol | Relative tolerance in nodal projection | Real | 1.e-11 | +| mg_rtol | Relative tolerance in nodal projection | Real | 1.e-11 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| mg_atol | Absolute tolerance in nodal projection | Real | 1.e-14 | +| mg_atol | Absolute tolerance in nodal projection | Real | 1.e-14 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| maxiter | Maximum number of iterations in the nodal projection | Int | 100 | +| maxiter | Maximum number of iterations in the nodal projection | Int | 100 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bottom_maxiter | Maximum number of iterations in the nodal projection | Int | 100 | +| bottom_maxiter | Maximum number of iterations in the nodal projection | Int | 100 | | | bottom solver if using bicg, cg, bicgcg or cgbicg | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| mg_max_coarsening_level | Maximum number of coarser levels to allowin the nodal projection | Int | 100 | +| mg_max_coarsening_level | Maximum number of coarser levels to allowin the nodal projection | Int | 100 | | | If set to 0, the bottom solver will be called at the current level | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | bottom_solver | Which bottom solver to use in the nodal projection | String | bicgcg | -| | | | | -| | Options are bicgcg, bicgstab, cg, cgbicg, smoother or hypre | | | +| | | | | +| | Options are bicgcg, bicgstab, cg, cgbicg, smoother or hypre | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | hypre_namespace | Namespace to use in the nodal projection when using hypre | String | hypre | -| | to control hypre specific settings. It can be any string. | | | +| | to control hypre specific settings. It can be any string. | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | hypre_interface | Which interface to use in the nodal projection when using hypre | String | ij | -| | | | | -| | Options are ij, semi_structured or structured | | | +| | | | | +| | Options are ij, semi_structured or structured | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ + +MAC projection +-------------- + These control the MAC projection and must be preceded by "mac_proj.": +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ @@ -51,32 +59,36 @@ These control the MAC projection and must be preceded by "mac_proj.": +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | bottom_verbose | Verbosity of BiCGStab solver in MAC projection | Int | 0 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| mg_rtol | Relative tolerance in MAC projection | Real | 1.e-11 | +| mg_rtol | Relative tolerance in MAC projection | Real | 1.e-11 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| mg_atol | Absolute tolerance in MAC projection | Real | 1.e-14 | +| mg_atol | Absolute tolerance in MAC projection | Real | 1.e-14 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| maxiter | Maximum number of iterations in the MAC projection | Int | 200 | +| maxiter | Maximum number of iterations in the MAC projection | Int | 200 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| bottom_maxiter | Maximum number of iterations in the MAC projection | Int | 200 | +| bottom_maxiter | Maximum number of iterations in the MAC projection | Int | 200 | | | bottom solver if using bicg, cg, bicgcg or cgbicg | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| mg_max_coarsening_level | Maximum number of coarser levels to allow in the MAC projection | Int | 100 | +| mg_max_coarsening_level | Maximum number of coarser levels to allow in the MAC projection | Int | 100 | | | If set to 0, the bottom solver will be called at the current level | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | bottom_solver | Which bottom solver to use in the MAC projection | String | bicgcg | -| | | | | -| | Options are bicgcg, bicgstab, cg, cgbicg, smoother or hypre | | | +| | | | | +| | Options are bicgcg, bicgstab, cg, cgbicg, smoother or hypre | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | hypre_namespace | Namespace to use in the MAC projection when using hypre | String | hypre | -| | to control hypre specific settings. It can be any string. | | | +| | to control hypre specific settings. It can be any string. | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | hypre_interface | Which interface to use in the MAC projection when using hypre | String | ij | -| | | | | -| | Options are ij, semi_structured or structured | | | +| | | | | +| | Options are ij, semi_structured or structured | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -NOTE: If the :cpp:`nodal_proj` and :cpp:`mac_proj` :cpp:`hypre_namespace`'s are set, they must be distinct unless set to -:cpp:`hypre`, in which case the default behavior is recovered in which case hypre settings apply to all solvers. +NOTE: If the :cpp:`nodal_proj` and :cpp:`mac_proj` :cpp:`hypre_namespace`'s are set, they must be distinct unless set to +:cpp:`hypre`, in which case the default behavior is recovered in which case hypre settings apply to all solvers. + + +Diffusion +--------- These control the diffusion solver and must be preceded by "diffusion.": @@ -87,9 +99,9 @@ These control the diffusion solver and must be preceded by "diffusion.": +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | bottom_verbose | Verbosity of BiCGStab solver in diffusion solve | Int | 0 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| mg_rtol | Relative tolerance in diffusion solve | Real | 1.e-11 | +| mg_rtol | Relative tolerance in diffusion solve | Real | 1.e-11 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ -| mg_atol | Absolute tolerance in diffusion solve | Real | 1.e-14 | +| mg_atol | Absolute tolerance in diffusion solve | Real | 1.e-14 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | maxiter | Maximum number of iterations in diffusion solve | Int | 100 | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ @@ -100,6 +112,91 @@ These control the diffusion solver and must be preceded by "diffusion.": | | If set to 0, the bottom solver will be called at the current level | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ | bottom_solver | Which bottom solver to use in the diffusion solve | String | bicgcg | -| | | | | -| | Options are bicgcg, bicgstab, cg, cgbicg, or smoother | | | +| | | | | +| | Options are bicgcg, bicgstab, cg, cgbicg, or smoother | | | +-------------------------+-----------------------------------------------------------------------+-------------+--------------+ + + + +Hypre Settings +-------------- + +The following inputs control the hypre settings and are read directly +by AMReX when we use hypre as the bottom solver, i.e., when +:cpp:`nodal_proj.bottom_solver = hypre` and/or when +:cpp:`mac_proj.bottom_solver = hypre` (see :ref:`Chap:InputsMultigrid`) +These settings must be preceded by the hypre_namespace setting corresponding +to the solver (see :ref:`Chap:InputsMultigrid`). + +NOTE: By default, the MAC and nodal projections use the same settings +specified with the namespace :cpp:`hypre`, however the solvers can be configured +separately by specifying :cpp:`mac_proj.hypre_namespace` and :cpp:`nodal_proj.hypre_namespace`. + +When not using the default namespace :cpp:`hypre`, additional restrictions apply: + +#. Both :cpp:`mac_proj.hypre_namespace` and :cpp:`nodal_proj.hypre_namespace` must be set. + +#. :cpp:`mac_proj.hypre_namespace` and :cpp:`nodal_proj.hypre_namespace` must be unique. + + ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| | Description | Type | Default | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| verbose | Verbosity of hypre | Int | 0 | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| adjust_singular_matrix | Should be true if the problem to be solved has singular matrix | Bool | false | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| hypre_solver | Type of hypre solver | String | BoomerAMG | +| | | | | +| | Options are BoomerAMG, GMRES, COGMRES, LGMRES, FlexGMRES, BiCGSTAB, | | | +| | PCG or Hybrid | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| hypre_preconditioner | Type of preconditioner | String | none | +| | | | | +| | Options are BoomerAMG or euclid | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| recompute_preconditioner | Recompute preconditioner during runs | Bool | true | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| write_matrix_files | Write out matrix into text files | Bool | false | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| overwrite_existing_matrix_files | Over-write existing matrix files | Bool | false | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_verbose | Verbosity of BoomerAMG preconditioner | Int | 0 | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_logging | When using BoomerAMG preconditioner | Int | 0 | +| | | | | +| | See HYPRE_BoomerAMGSetLogging | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_coarsen_type | When using BoomerAMG preconditioner | Int | 6 | +| | | | | +| | See HYPRE_BoomerAMGSetCoarsenType | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_cycle_type | When using BoomerAMG preconditioner | Int | 1 | +| | | | | +| | See HYPRE_BoomerAMGSetCycleType | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_relax_type | When using BoomerAMG preconditioner | Int | 6 | +| | | | | +| | See HYPRE_BoomerAMGSetRelaxType | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_relax_order | When using BoomerAMG preconditioner | Int | 1 | +| | | | | +| | See HYPRE_BoomerAMGSetRelaxOrder | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_num_sweeps | When using BoomerAMG preconditioner | Int | 2 | +| | | | | +| | See HYPRE_BoomerAMGSetNumSweeps | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_max_levels | When using BoomerAMG preconditioner | Int | 20 | +| | | | | +| | See HYPRE_BoomerAMGSetMaxLevels | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_strong_threshold | When using BoomerAMG preconditioner | Real | 0.57 | +| | | | | +| | See HYPRE_BoomerAMGSetStrongThreshold | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ +| bamg_interp_type | When using BoomerAMG preconditioner | Int | 0 | +| | | | | +| | HYPRE_BoomerAMGSetInterpType | | | ++-----------------------------------+-----------------------------------------------------------------------+-------------+--------------+ + diff --git a/docs/source_docs/user_guide/inputs/output.rst b/docs/source_docs/user_guide/inputs/output.rst new file mode 100644 index 0000000000000000000000000000000000000000..4b9bad4a4390f676d1f5f052760e07d8f99c989f --- /dev/null +++ b/docs/source_docs/user_guide/inputs/output.rst @@ -0,0 +1,13 @@ +Output +====== + +Stuff here? + +.. toctree:: + :maxdepth: 0 + + output/checkpointing + output/plotfiles + output/monitors + output/ascent + output/spatial_avgs diff --git a/docs/source_docs/user_guide/inputs/output/ascent.rst b/docs/source_docs/user_guide/inputs/output/ascent.rst new file mode 100644 index 0000000000000000000000000000000000000000..a2272c947c0104341ed5f786f30c8c7b879a54e1 --- /dev/null +++ b/docs/source_docs/user_guide/inputs/output/ascent.rst @@ -0,0 +1,31 @@ +Ascent +------ + +The following inputs must be preceded by "mfix." and control frequency and naming of plotfile generation as well +as whether the EB geometry or level set should be written out, and if the particles should be written out in Ascii +format (for debugging). + ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++======================+=======================================================================+=============+===========+ +| ascent_int | Frequency of ascent pipeline; | Int | -1 | +| | if -1 then ascent will not be called. | | | ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ +| ascent_per_approx | Time period of the ascent pipeline (approximate); | Real | -1 | +| | if -1 then ascent will not be called. | | | ++----------------------+-----------------------------------------------------------------------+-------------+-----------+ + + +`Ascent `_ has been integrated into MFIX-Exa for *in situ* visualization. +For codes that have been built with Ascent support, the following inputs must be preceded by "ascent." +and specifies the ascent actions for fluid and/or particles. The frequency which these are called +is controlled by `ascent_int` or `ascent_per_approx`, see above. Note that if an ascent pipeline +is being included in a GPU build/run, then you must enable managed memory, +i.e., set `amrex.the_arena_is_managed = true`. + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| actions | yaml file of the ascent actions (ex. ascent_actions.yaml). If no file | String | | +| | name is provided, then calls to Ascent are skipped. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ diff --git a/docs/source_docs/inputs/InputsCheckpoint.rst b/docs/source_docs/user_guide/inputs/output/checkpointing.rst similarity index 99% rename from docs/source_docs/inputs/InputsCheckpoint.rst rename to docs/source_docs/user_guide/inputs/output/checkpointing.rst index 6bd0a6d60c400581fc5d83ff234d6c85e28c23d7..d5558425128c6956b14d8214feeebad633e5e9f9 100644 --- a/docs/source_docs/inputs/InputsCheckpoint.rst +++ b/docs/source_docs/user_guide/inputs/output/checkpointing.rst @@ -1,7 +1,7 @@ .. _Chap:InputsCheckpoint: -Checkpoint/Restart -================== +Checkpointing +============= The following inputs must be preceded by "mfix." and control checkpoint/restart. diff --git a/docs/source_docs/inputs/InputsMonitors.rst b/docs/source_docs/user_guide/inputs/output/monitors.rst similarity index 89% rename from docs/source_docs/inputs/InputsMonitors.rst rename to docs/source_docs/user_guide/inputs/output/monitors.rst index c19fa58572526aec1c3480e710a773fbe6a62839..d2ac4cb3ad44d44070a11b96503696b7b81974d4 100644 --- a/docs/source_docs/inputs/InputsMonitors.rst +++ b/docs/source_docs/user_guide/inputs/output/monitors.rst @@ -1,50 +1,3 @@ -.. _Chap:InputsMonitors: - -Spatial averages -================ - -The following inputs must be preceded by "mfix." and control whether to compute -spatial averages, and how often to output the results. n is the number of -spatial averages implicitly defined by the size of avg_region_x_w. - -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| | Description | Type | Default | -+==================+=======================================================================+=============+===========+ -| avg_int | Interval, in number of CFD dt's, to write output | Int | -1 | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_file | Base file name which is appended with the data type (vel_p, p_g, | String | avg_region| -| | ep_g or vel_g), the number of this type of averaging, and the .csv | | | -| | file extension | | | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_ep_g | Average and save fluid-phase volume fraction (if 1) | n*Int | 0 | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_p_g | Average and save fluid-phase pressure (if 1) | n*Int | 0 | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_vel_g | Average and save fluid-phase velocity (if 1) | n*Int | 0 | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_T_g | Average and save fluid-phase temperature (if 1) | n*Int | 0 | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_ro_p | Average and save particle density (if 1) | n*Int | 0 | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_vel_p | Average and save particle velocity (if 1) | n*Int | 0 | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_T_p | Average and save particle temperature (if 1) | n*Int | 0 | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_region_x_w | Lower bound of averaging region in x-direction | n*Real | None | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_region_x_e | Upper bound of averaging region in x-direction | n*Real | None | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_region_y_s | Lower bound of averaging region in y-direction | n*Real | None | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_region_y_n | Upper bound of averaging region in y-direction | n*Real | None | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_region_z_b | Lower bound of averaging region in z-direction | n*Real | None | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ -| avg_region_z_t | Upper bound of averaging region in z-direction | n*Real | None | -+------------------+-----------------------------------------------------------------------+-------------+-----------+ - - - Monitors ======== diff --git a/docs/source_docs/inputs/InputsPlotFiles.rst b/docs/source_docs/user_guide/inputs/output/plotfiles.rst similarity index 100% rename from docs/source_docs/inputs/InputsPlotFiles.rst rename to docs/source_docs/user_guide/inputs/output/plotfiles.rst diff --git a/docs/source_docs/user_guide/inputs/output/spatial_avgs.rst b/docs/source_docs/user_guide/inputs/output/spatial_avgs.rst new file mode 100644 index 0000000000000000000000000000000000000000..437d1209c52aef013218cd1044be3d08eb0fad21 --- /dev/null +++ b/docs/source_docs/user_guide/inputs/output/spatial_avgs.rst @@ -0,0 +1,42 @@ +Spatial averages +---------------- + +The following inputs must be preceded by "mfix." and control whether to compute +spatial averages, and how often to output the results. n is the number of +spatial averages implicitly defined by the size of avg_region_x_w. + ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++==================+=======================================================================+=============+===========+ +| avg_int | Interval, in number of CFD dt's, to write output | Int | -1 | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_file | Base file name which is appended with the data type (vel_p, p_g, | String | avg_region| +| | ep_g or vel_g), the number of this type of averaging, and the .csv | | | +| | file extension | | | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_ep_g | Average and save fluid-phase volume fraction (if 1) | n*Int | 0 | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_p_g | Average and save fluid-phase pressure (if 1) | n*Int | 0 | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_vel_g | Average and save fluid-phase velocity (if 1) | n*Int | 0 | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_T_g | Average and save fluid-phase temperature (if 1) | n*Int | 0 | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_ro_p | Average and save particle density (if 1) | n*Int | 0 | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_vel_p | Average and save particle velocity (if 1) | n*Int | 0 | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_T_p | Average and save particle temperature (if 1) | n*Int | 0 | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_region_x_w | Lower bound of averaging region in x-direction | n*Real | None | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_region_x_e | Upper bound of averaging region in x-direction | n*Real | None | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_region_y_s | Lower bound of averaging region in y-direction | n*Real | None | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_region_y_n | Upper bound of averaging region in y-direction | n*Real | None | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_region_z_b | Lower bound of averaging region in z-direction | n*Real | None | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ +| avg_region_z_t | Upper bound of averaging region in z-direction | n*Real | None | ++------------------+-----------------------------------------------------------------------+-------------+-----------+ diff --git a/docs/source_docs/user_guide/inputs/regions_defs.rst b/docs/source_docs/user_guide/inputs/regions_defs.rst new file mode 100644 index 0000000000000000000000000000000000000000..d57bd97078c18dfaba5fb04875ac29edcace2999 --- /dev/null +++ b/docs/source_docs/user_guide/inputs/regions_defs.rst @@ -0,0 +1,28 @@ +.. _InputsRegions: + +Regions definitions +=================== + +Regions are used to define sections of the domain. They may be either boxes, planes or points. They are used in building initial condition regions. + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| mfix.regions | Names given to regions. | String | None | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| regions.[region].lo | Low corner of physical region (physical, not index space) | Reals | 0 0 0 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| regions.[region].hi | High corner of physical region (physical, not index space) | Reals | 0 0 0 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +Below is an example for specifying two regions. + +.. code-block:: none + + mfix.regions = full-domain riser + + regions.full-domain.lo = 0.0000 0.0000 0.0000 + regions.full-domain.hi = 3.7584 0.2784 0.2784 + + regions.riser.lo = 0.0000 0.0000 0.0000 + regions.riser.hi = 0.1000 0.2784 0.2784 diff --git a/docs/source_docs/user_guide/inputs/solids_model.rst b/docs/source_docs/user_guide/inputs/solids_model.rst new file mode 100644 index 0000000000000000000000000000000000000000..101679d322df8f4b4de6adab2f291dba5bc6eafd --- /dev/null +++ b/docs/source_docs/user_guide/inputs/solids_model.rst @@ -0,0 +1,133 @@ +Solids model +============ + +Solids settings +--------------- + +Enabling the SOLIDS solver and specifying options common to both DEM and PIC +models. The following inputs must be preceded by the "solids." root + ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| | Description | Type | Default | ++==========================================+=============================================================+==========+==========+ +| types | Specified name(s) of the SOLIDS types or None to disable | String | None | +| | the SOLIDS solver. The user defined names are used to | | | +| | specify DEM and/or PIC model inputs. | | | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| molecular_weight | Value of constant solid molecular | Real | 0 | +| | weight | | | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| specific_heat | Specify which specific heat model to | String | None | +| | use for solid. Available options | | | +| | include: | | | +| | | | | +| | * 'constant' for constant specific heat | | | +| | model | | | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| specific_heat.constant | Value of species molecular weight. | Real | 0 | +| | [required if fluid.specific_heat = | | | +| | 'constant']. | | | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| reference_temperature | Value of the reference temperature used | Real | 0 | +| | for specific enthalpy | | | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| species | Specify which species can constitute | String | None | +| | the fluid phase [defined species must | | | +| | be a subset of the species.solve | | | +| | arguments]. | | | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| newton_solver.absolute_tol | Define absolute tolerance for Damped-Newton solver | Real | 1.e-6 | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| newton_solver.relative_tol | Define relative tolerance for Damped-Newton solver | Real | 1.e-6 | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ +| newton_solver.max_iterations | Define max number of iterations for Damped-Newton solver | int | 100 | ++------------------------------------------+-------------------------------------------------------------+----------+----------+ + +Below is an example for specifying the solids solver model options. + +.. code-block:: none + + solids.types = my_solid0 my_solid1 + + solids.reference_temperature = 298.15 + + solids.specific_heat = mixture + + solids.species = Fe2O3 FeO + + +DEM model settings +------------------ + +Enabling the DEM solver and specifying model options. + ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| | Description | Type | Default | ++=========================+=========================================================================+==========+===========+ +| dem.solve | Specified name(s) of the DEM types or None to disable the DEM solver. | String | None | +| | The user defined names are used to specify DEM model inputs. | | | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| dem.friction_coeff.pp | Friction coefficient :: particle to particle collisions [required] | Real | 0 | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| dem.friction_coeff.pw | Friction coefficient :: particle to wall collisions [required] | Real | 0 | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| dem.spring_const.pp | Normal spring constant :: particle to particle collisions [required] | Real | 0 | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| dem.spring_const.pw | Normal spring constant :: particle to wall collisions [required] | Real | 0 | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| dem.spring_tang_fac.pp | Tangential-to-normal spring constant factor :: particle to particle | Real | 0 | +| | collisions [required] | | | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| dem.spring_tang_fac.pw | Tangential-to-normal spring constant factor :: particle to wall | Real | 0 | +| | collisions [required] | | | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| dem.damping_tang_fac.pp | Factor relating the tangential damping coefficient to the normal | Real | 0 | +| | damping coefficient :: particle to particle collisions [required] | | | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| dem.damping_tang_fac.pw | Factor relating the tangential damping coefficient to the normal | Real | 0 | +| | damping coefficient :: particle to wall collisions [required] | | | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ + +The following inputs use the DEM type names specified using the `dem.solve` input to define restitution coefficients and +are proceeded with `dem.restitution_coeff`. These must be defined for all solid-solid and solid-wall combinations. + ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| | Description | Type | Default | ++=========================+=========================================================================+==========+===========+ +| [solid0].[solid1] | Specifies the restitution coefficient between solid0 and solid1. Here | Real | 0 | +| | the order is not important and could be defined as [solid1].[solid0] | | | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ +| [solid0].wall | Specifies the restitution coefficient between solid0 and the wall. | Real | 0 | +| | Order is not important and this could be defined as wall.[solid0] | | | ++-------------------------+-------------------------------------------------------------------------+----------+-----------+ + +Below is an example for specifying the inputs for two DEM solids. + +.. code-block:: none + + dem.solve = sand char + + dem.friction_coeff.pp = 0.25 + dem.friction_coeff.pw = 0.15 + + dem.spring_const.pp = 100.0 + dem.spring_const.pw = 100.0 + + dem.spring_tang_fac.pp = 0.2857 + dem.spring_tang_fac.pw = 0.2857 + + dem.damping_tang_fac.pp = 0.5 + dem.damping_tang_fac.pw = 0.5 + + dem.restitution_coeff.sand.sand = 0.85 + dem.restitution_coeff.sand.char = 0.88 + dem.restitution_coeff.char.char = 0.90 + + dem.restitution_coeff.sand.wall = 0.85 + dem.restitution_coeff.char.wall = 0.89 + + +PIC model settings +------------------ + +.. todo:: Add PIC inputs diff --git a/docs/source_docs/user_guide/inputs/species_defs.rst b/docs/source_docs/user_guide/inputs/species_defs.rst new file mode 100644 index 0000000000000000000000000000000000000000..9abd71a560c3a3e1ada1b9ad147be31bd8672077 --- /dev/null +++ b/docs/source_docs/user_guide/inputs/species_defs.rst @@ -0,0 +1,105 @@ +Species definitions +=================== + + +Enabling the species mass fraction solver and specifying species model options. + ++----------------------+-------------------------------------------------------------------------+----------+-----------+ +| | Description | Type | Default | ++======================+=========================================================================+==========+===========+ +| species.solve | Specified name of the species or None to disable the species solver. | String | None | +| | The name assigned to the species solver is used to specify species | | | +| | inputs. | | | ++----------------------+-------------------------------------------------------------------------+----------+-----------+ + + +The following inputs must be preceded by the "species." prefix + ++-------------------------------------------+-------------------------------------------------------+----------+-----------+ +| | Description | Type | Default | ++===========================================+=======================================================+==========+===========+ +| [specie0].molecular_weight | Value of species molecular weight. [required if | Real | 0 | +| | fluid.molecular_weight='mixture']. | | | ++-------------------------------------------+-------------------------------------------------------+----------+-----------+ +| diffusivity | Specify which diffusivity model to use for species | String | None | +| | [required]. | | | +| | Available options include: | | | +| | | | | +| | * 'constant' for constant diffusivity model | | | ++-------------------------------------------+-------------------------------------------------------+----------+-----------+ +| diffusivity.constant | Value of constant species diffusivity. [required if | Real | 0 | +| | diffusivity_model='constant']. | | | ++-------------------------------------------+-------------------------------------------------------+----------+-----------+ +| specific_heat | Specify which specific heat model to use for species | String | None | +| | [required if fluid.molecular_weight='mixture']. | | | +| | Available options include: | | | +| | | | | +| | * 'constant' for constant specific heat model | | | +| | * 'nasa7-poly' for NASA7 Polynomials model | | | ++-------------------------------------------+-------------------------------------------------------+----------+-----------+ +| [specie0].specific_heat.constant | Value of constant species diffusivity. [required if | Real | 0 | +| | diffusivity model='constant']. | | | ++-------------------------------------------+-------------------------------------------------------+----------+-----------+ +| [specie0].specific_heat.NASA7.a[i] | Value of i-th coefficient, with i=0,..,6 for NASA7 | Real | 0 | +| | polynomial coefficient [required if specific heat | | | +| | model='NASA7-Poly']. | | | ++-------------------------------------------+-------------------------------------------------------+----------+-----------+ +| [specie0].enthalpy_of_formation | Value of constant enthalpy of formation. [required if | Real | 0 | +| | specific heat model='constant']. | | | ++-------------------------------------------+-------------------------------------------------------+----------+-----------+ + +Below is an example for specifying species solver model options. + +.. code-block:: none + + species.solve = O2 CO CO2 Fe2O3 FeO + + species.diffusivity = constant + species.diffusivity.constant = 1.9e-5 + + species.specific_heat = NASA7-poly + + # Oxygen + species.O2.molecular_weight = 31.99880e-3 + species.O2.specific_heat.NASA7.a0 = 3.78245636E+00 3.66096065E+00 + species.O2.specific_heat.NASA7.a1 = -2.99673416E-03 6.56365811E-04 + species.O2.specific_heat.NASA7.a2 = 9.84730201E-06 -1.41149627E-07 + species.O2.specific_heat.NASA7.a3 = -9.68129509E-09 2.05797935E-11 + species.O2.specific_heat.NASA7.a4 = 3.24372837E-12 -1.29913436E-15 + species.O2.specific_heat.NASA7.a5 = -1.06394356E+03 -1.21597718E+03 + + # Carbon monoxide + species.CO.molecular_weight = 28.01040e-3 + species.CO.specific_heat.NASA7.a0 = 3.57953350E+00 3.04848590E+00 + species.CO.specific_heat.NASA7.a1 = -6.10353690E-04 1.35172810E-03 + species.CO.specific_heat.NASA7.a2 = 1.01681430E-06 -4.85794050E-07 + species.CO.specific_heat.NASA7.a3 = 9.07005860E-10 7.88536440E-11 + species.CO.specific_heat.NASA7.a4 = -9.04424490E-13 -4.69807460E-15 + species.CO.specific_heat.NASA7.a5 = -1.43440860E+04 -1.42661170E+04 + + # Carbon dioxide + species.CO2.molecular_weight = 44.00980e-3 + species.CO2.specific_heat.NASA7.a0 = 2.35681300E+00 4.63651110E+00 + species.CO2.specific_heat.NASA7.a1 = 8.98412990E-03 2.74145690E-03 + species.CO2.specific_heat.NASA7.a2 = -7.12206320E-06 -9.95897590E-07 + species.CO2.specific_heat.NASA7.a3 = 2.45730080E-09 1.60386660E-10 + species.CO2.specific_heat.NASA7.a4 = -1.42885480E-13 -9.16198570E-15 + species.CO2.specific_heat.NASA7.a5 = -4.83719710E+04 -4.90249040E+04 + + # Hematite + species.Fe2O3.molecular_weight = 159.68820e-3 + species.Fe2O3.specific_heat.NASA7.a0 = 1.52218166E-01 2.09445369E+01 + species.Fe2O3.specific_heat.NASA7.a1 = 6.70757040E-02 0.00000000E+00 + species.Fe2O3.specific_heat.NASA7.a2 = -1.12860954E-04 0.00000000E+00 + species.Fe2O3.specific_heat.NASA7.a3 = 9.93356662E-08 0.00000000E+00 + species.Fe2O3.specific_heat.NASA7.a4 = -3.27580975E-11 0.00000000E+00 + species.Fe2O3.specific_heat.NASA7.a5 = -1.01344092E+05 -1.07936580E+05 + + # Wustite + species.FeO.molecular_weight = 71.84440e-3 + species.FeO.specific_heat.NASA7.a0 = 3.68765953E+00 1.81588527E+00 + species.FeO.specific_heat.NASA7.a1 = 1.09133433E-02 1.70742829E-02 + species.FeO.specific_heat.NASA7.a2 = -1.61179493E-05 -2.39919190E-05 + species.FeO.specific_heat.NASA7.a3 = 1.06449256E-08 1.53690046E-08 + species.FeO.specific_heat.NASA7.a4 = -2.39514915E-12 -3.53442390E-12 + species.FeO.specific_heat.NASA7.a5 = -3.34867527E+04 -3.30239565E+04 diff --git a/docs/source_docs/inputs/InputsTimeStepping.rst b/docs/source_docs/user_guide/inputs/time-stepping.rst similarity index 50% rename from docs/source_docs/inputs/InputsTimeStepping.rst rename to docs/source_docs/user_guide/inputs/time-stepping.rst index b2b1489b9934482e57a936d8f3c64675ccac80b4..afec60b33d1817861086e134cf0f5d4b5a0189ef 100644 --- a/docs/source_docs/inputs/InputsTimeStepping.rst +++ b/docs/source_docs/user_guide/inputs/time-stepping.rst @@ -1,15 +1,96 @@ .. sec:InputsTimeStepping: -Time Stepping +Time stepping ============= -Note that if both are specified, both criteria -are used and the simulation still stop when the first criterion is hit. In the case of unsteady flow, -the simulation will stop when either the number of steps reaches max_step or time reaches stop_time. -In the case of unsteady flow, the simulation will stop when either the tolerance (difference between -subsequent steps) is reached or the number of iterations reaches the maximum number specified. +There are several ways that the inputs are used to determine the time step of particle-only, +fluid-only, and coupled fluid-particle systems. -The following inputs must be preceded by "mfix.": +.. rubric:: Fluid-only simulations + +In fluid-only simulations, setting ``mfix.fixed_dt`` causes the fluid to advance with a +fixed (constant) time step. If ``mfix.fixed_dt`` is not defined, then an appropriate time +step is computed based on the advective CFL condition. + +.. caution:: + + **The adaptive time step based on the advective CFL condition is always computed + and is stronly recommended for most cases.** + + * For a fixed time step simiulation, if the computed step size is smaller than + ``mfix.fixed_dt`` for a fixed, the simulation aborts with the message: + + .. highlight:: c++ + + :: + + amrex::Abort::0::"Fixed dt is too large for fluid solve !!! + + + * For simulations using the adaptive time step: + + * If the computed time step is larger than ``mfix.dt_max``, then the + time step is set to ``dt_max`` + + * If the computed time step is smaller than ``mfix.dt_min``, then the + simulation aborts with the message: + + .. highlight:: c++ + + :: + + amrex::Abort::0::"Current dt is smaller than dt_min !!! + +.. rubric:: Particle-only DEM simulations + +In particle-only DEM simulations, the time step used to advance particles, ``dtsolid``, +is determined by computing the collision time ``tcoll`` from particle properties, then dividing +the result by the number of steps per collision, ``tcoll_ratio``: + +.. highlight:: c++ + +:: + + dtsolid = tcoll / tcoll_ratio; + +.. note:: + + ``mfix.fixed_dt`` must be defined for particle-only DEM simulations, however it is only + used to determine the frequency of outputs and has no effect on the particle advance. If + a positive value is not specified for ``mfix.fixed_dt``, then the code aborts with the + following message: + + .. highlight:: c++ + + :: + + amrex::abort::0::if running particle-only must specify fixed_dt in the inputs file !!! + + +.. rubric:: Coupled fluid-DEM simulations + +In a coupled fluid-DEM simulation, the fluid time step, ``dt``, and the particle time step, +``dtsolid``, are computed the same as in fluid-only and DEM-only simulations, respectively. +If ``dt < dtsolid``, then the particle sub-time step, ``subdt``, is set to the fluid time +step and one particle advance is taken. However, if ``dt > dtsolid`` (which is usually the +case), then the number of sub-steps needed for DEM particles to advance the same total time +as the fluid, ``nsubsteps``, is computed by dividing ``dt`` by ``dtsolid`` and the particle +sub-time step is computed by dividing ``dt`` by ``nsubsteps``. + +.. highlight:: c++ + +:: + + int nsubsteps = 1; + amrex::Real subdt = dt; + + if (dt > dtsolid) { + nsubsteps = amrex::Math::ceil(dt / dtsolid); + subdt = dt / nsubsteps; + } + + +The following inputs are defined using the ``mfix`` prefix. +----------------------+-----------------------------------------------------------------------+-------------+--------------+ | Key | Description | Type | Default | @@ -18,15 +99,19 @@ The following inputs must be preceded by "mfix.": +----------------------+-----------------------------------------------------------------------+-------------+--------------+ | stop_time | Maximum time to reach (s) | Real | -1.0 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| fixed_dt | Should we use a fixed timestep? | Int | 0 | +| fixed_dt | Flag to use a fixed time step | Int | 0 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| cfl | CFL constraint (dt < cfl * dx / u) if fixed_dt not 1 | Real | 0.5 | +| cfl | CFL constraint (dt < cfl * dx / u) | Real | See note | +| | | | | +| | * Defaults to 0.5 if ``mfix.advection_type = MOL`` | | | +| | * Defaults to 0.9 if ``mfix.advection_type = Godunov`` | | | +| | * ignored if ``mfix.fixed_dt = 1`` | | | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| dt_min | Abort if dt gets smaller than this value | Real | 1.e-6 | +| dt_min | Abort if ``dt`` gets smaller than this value | Real | 1.e-6 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| dt_max | Maximum value of dt if calculating with cfl | Real | 1.e14 | +| dt_max | Maximum value of ``dt`` if ``fixed_dt`` is not 1 | Real | 1.e14 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -| tcoll_ratio | DEM timestep equals the min collision time divided by this value | Real | 50.0 | +| tcoll_ratio | DEM time step equals the min collision time divided by this value | Real | 50.0 | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ | walltime_limit | Runtime limit specified with format HH:MM:SS. When the runtime has | String | "" | | | almost reached the limit (approaching is computed by considering the | | | @@ -37,8 +122,11 @@ The following inputs must be preceded by "mfix.": | | folder, makes the code stop and perform a clean exit | | | +----------------------+-----------------------------------------------------------------------+-------------+--------------+ -The following inputs must be preceded by "mfix." and are only relevant if running a problem to steady state. -Currently, the criterion for setting "steady_state" to true is if "dt" is undefined in mfix.dat +In the case of unsteady flow, the simulation will stop when either the number of steps +reaches ``max_step`` or time reaches ``stop_time``. + + +The following inputs are defined using the ``mfix`` prefix and are only relevant if running a steady state simulation. +-----------------------+-----------------------------------------------------------------------+-------------+------------+ | Key | Description | Type | Default | @@ -52,53 +140,5 @@ Currently, the criterion for setting "steady_state" to true is if "dt" is undefi | steady_state_maxiter | Maximum number of allowed iterations to converge to steady state | Int | 100000000 | +-----------------------+-----------------------------------------------------------------------+-------------+------------+ -Setting the Time Step ---------------------- - -There are several ways that the inputs are used to determine what time step -is used in the evolution of the fluid-particle system in MFIX-Exa. - -1. In a pure particle case, the :cpp:`mfix.fixed_dt`, if specified, is only used to determine the frequency -of outputs, it has no effect on the "dtsolid" used in the particle evaluation. If you do not specify a positive -value of :cpp:`mfix.fixed_dt` then the code will abort. - -.. highlight:: c++ - -:: - - amrex::Abort::0::If running particle-only must specify fixed_dt in the inputs file !!! - -The particle time step "dtsolid" is determined by computing the collision time "tcoll" from particle properties, -then setting "dtsolid" to be "tcoll / 50". - -2. In a pure fluid case, there are two options: - - * If you want to fix the dt, simply set :cpp:`mfix.fixed_dt = XXX` and the fluid time - step will always be that number. - - * If you want to let the code determine the appropriate time step using the advective CFL - condition, then set :cpp:`mfix.cfl = 0.7` for example, and the fluid time step will - be computed to be dt = 0.7 * dx / max(vel). - - * If dt as computed in the compute_dt routine is smaller than the user-specified - :cpp:`mfix.dt_min` then the code will abort: - - .. highlight:: c++ - - :: - - amrex::Abort::0::"Current dt is smaller than dt_min !!! - - * If dt as computed in the compute_dt routine is larger than the user-specified - :cpp:`mfix.dt_max` then dt will be set to the minimum of its computed value and dt_max - - * Note that the cfl defaults to 0.5 so it does not have to be set in the inputs file. If neither - :cpp:`mfix.cfl` nor :cpp:`fixed_dt` is set, then default value of cfl will be used. - If :cpp:`mfix.fixed_dt` is set, then it will override the cfl option whether - :cpp:`mfix.cfl` is set or not. -These options apply to steady state calculations as well as unsteady runs. -3. In a coupled particle-fluid case, dt is determined as in the pure-fluid case. In this case - the particle time step "subdt" is first computed as in the particle-only case ("dtsolid"), - then is adjusted so that an integral number of particle steps fit into a single fluid time step. diff --git a/docs/source_docs/Introduction.rst b/docs/source_docs/user_guide/introduction.rst similarity index 99% rename from docs/source_docs/Introduction.rst rename to docs/source_docs/user_guide/introduction.rst index d72ed54c5028eb96be4ee91065dbdc87c16bae21..ebc27e6719d7725a1efab938cf1b1cc34d0156ce 100644 --- a/docs/source_docs/Introduction.rst +++ b/docs/source_docs/user_guide/introduction.rst @@ -29,3 +29,5 @@ MFIX-Exa heavily leverages `AMReX`_ which is also supported by ECP as part of the AMReX Co-Design Center. .. _AMReX: https://amrex-codes.github.io/ + + diff --git a/docs/source_docs/GettingStarted_Chapter.rst b/docs/source_docs/user_guide/quick-start.rst similarity index 80% rename from docs/source_docs/GettingStarted_Chapter.rst rename to docs/source_docs/user_guide/quick-start.rst index 030b653dca5915e09fe3b7502237493c06f26289..0fafc9e2867e18ac32357b598839a9d5dc8832f7 100644 --- a/docs/source_docs/GettingStarted_Chapter.rst +++ b/docs/source_docs/user_guide/quick-start.rst @@ -26,8 +26,9 @@ the simulations results. .. toctree:: :maxdepth: 1 + :caption: FUCK THIS: + :hidden: - Building MFIX-Exa - Running your first simulation - Visualizing simulation results - HPC + Building MFIX-Exa + Running your first simulation + Visualizing results diff --git a/docs/source_docs/getting_started/BuildingMFIX.rst b/docs/source_docs/user_guide/quick_start/BuildingMFIX.rst similarity index 100% rename from docs/source_docs/getting_started/BuildingMFIX.rst rename to docs/source_docs/user_guide/quick_start/BuildingMFIX.rst diff --git a/docs/source_docs/getting_started/FirstSimulation.rst b/docs/source_docs/user_guide/quick_start/FirstSimulation.rst similarity index 100% rename from docs/source_docs/getting_started/FirstSimulation.rst rename to docs/source_docs/user_guide/quick_start/FirstSimulation.rst diff --git a/docs/source_docs/getting_started/Paraview.rst b/docs/source_docs/user_guide/quick_start/Paraview.rst similarity index 89% rename from docs/source_docs/getting_started/Paraview.rst rename to docs/source_docs/user_guide/quick_start/Paraview.rst index 7e8fcf67453594fc080ceec2fe4b22c01714616e..05d66ff5bba75ddd8059a7b627bde06a12199764 100644 --- a/docs/source_docs/getting_started/Paraview.rst +++ b/docs/source_docs/user_guide/quick_start/Paraview.rst @@ -19,7 +19,7 @@ in ``Pipeline Browser`` and press ``Apply`` on the properties tab. The embedded boundary will now be visible in the 3D viewer. The color and opacity of the embedded boundary can be changed on the properties tab. -.. image:: /getting_started/images/paraview_eb.png +.. image:: /user_guide/quick_start/images/paraview_eb.png Visualize the particles @@ -34,18 +34,18 @@ select the directory group corresponding to the specified prefix. In this example, the director group is displayed as ``plt...``. If only one plot directory has been written, select the ``plt#####`` directory. Press ``OK``. -.. image:: /getting_started/images/paraview_browse_plt.png +.. image:: /user_guide/quick_start/images/paraview_browse_plt.png A dialog will popup asking what reader to use. Select the ``AMReX/BoxLib Particles Reader`` and press ``OK``. -.. image:: /getting_started/images/paraview_reader.png +.. image:: /user_guide/quick_start/images/paraview_reader.png Press ``Apply`` on the properties tab to read the files. To actually see the particles, change the ``Representation`` from the default ``Surface`` to ``Point Gaussian``. The particles should now be visible in the 3D view. -.. image:: /getting_started/images/paraview_pt_gauss.png +.. image:: /user_guide/quick_start/images/paraview_pt_gauss.png On the properties tab, the radius of the particles can be changed by moving the slider or editing the value in the ``Gaussian Radius`` field. The particles can @@ -63,10 +63,10 @@ properties tab, select which variables to read (make sure to select ``ep_g``, we will use this later) and select apply. Under the Coloring section select ``ep_g`` to color the cells by this value. -.. image:: /getting_started/images/paraview_cells.png +.. image:: /user_guide/quick_start/images/paraview_cells.png You can open the embedded boundary, particle, and fluid data simultaneously, and change the opacities of the embedded boundary and fluid data to visualize all the data simultaneously. -.. image:: /getting_started/images/paraview_all.png +.. image:: /user_guide/quick_start/images/paraview_all.png diff --git a/docs/source_docs/getting_started/Visualization.rst b/docs/source_docs/user_guide/quick_start/Visualization.rst similarity index 94% rename from docs/source_docs/getting_started/Visualization.rst rename to docs/source_docs/user_guide/quick_start/Visualization.rst index 5212d74eba0e18fa4957a59e09b7d1f5fd4ecd13..c8bc4f8750c82490c2c727b503abbf10f5b63ba0 100644 --- a/docs/source_docs/getting_started/Visualization.rst +++ b/docs/source_docs/user_guide/quick_start/Visualization.rst @@ -9,6 +9,6 @@ to use the tools. .. toctree:: - :maxdepth: 1 + :maxdepth: 0 Paraview diff --git a/docs/source_docs/getting_started/images/paraview_all.png b/docs/source_docs/user_guide/quick_start/images/paraview_all.png similarity index 100% rename from docs/source_docs/getting_started/images/paraview_all.png rename to docs/source_docs/user_guide/quick_start/images/paraview_all.png diff --git a/docs/source_docs/getting_started/images/paraview_browse_plt.png b/docs/source_docs/user_guide/quick_start/images/paraview_browse_plt.png similarity index 100% rename from docs/source_docs/getting_started/images/paraview_browse_plt.png rename to docs/source_docs/user_guide/quick_start/images/paraview_browse_plt.png diff --git a/docs/source_docs/getting_started/images/paraview_cells.png b/docs/source_docs/user_guide/quick_start/images/paraview_cells.png similarity index 100% rename from docs/source_docs/getting_started/images/paraview_cells.png rename to docs/source_docs/user_guide/quick_start/images/paraview_cells.png diff --git a/docs/source_docs/getting_started/images/paraview_cells_threshold.png b/docs/source_docs/user_guide/quick_start/images/paraview_cells_threshold.png similarity index 100% rename from docs/source_docs/getting_started/images/paraview_cells_threshold.png rename to docs/source_docs/user_guide/quick_start/images/paraview_cells_threshold.png diff --git a/docs/source_docs/getting_started/images/paraview_eb.png b/docs/source_docs/user_guide/quick_start/images/paraview_eb.png similarity index 100% rename from docs/source_docs/getting_started/images/paraview_eb.png rename to docs/source_docs/user_guide/quick_start/images/paraview_eb.png diff --git a/docs/source_docs/getting_started/images/paraview_pt_gauss.png b/docs/source_docs/user_guide/quick_start/images/paraview_pt_gauss.png similarity index 100% rename from docs/source_docs/getting_started/images/paraview_pt_gauss.png rename to docs/source_docs/user_guide/quick_start/images/paraview_pt_gauss.png diff --git a/docs/source_docs/getting_started/images/paraview_pt_gauss_opts.png b/docs/source_docs/user_guide/quick_start/images/paraview_pt_gauss_opts.png similarity index 100% rename from docs/source_docs/getting_started/images/paraview_pt_gauss_opts.png rename to docs/source_docs/user_guide/quick_start/images/paraview_pt_gauss_opts.png diff --git a/docs/source_docs/getting_started/images/paraview_reader.png b/docs/source_docs/user_guide/quick_start/images/paraview_reader.png similarity index 100% rename from docs/source_docs/getting_started/images/paraview_reader.png rename to docs/source_docs/user_guide/quick_start/images/paraview_reader.png diff --git a/docs/source_docs/Inputs_Chapter.rst b/docs/source_docs/user_guide/run-time_inputs.rst similarity index 73% rename from docs/source_docs/Inputs_Chapter.rst rename to docs/source_docs/user_guide/run-time_inputs.rst index e2a1dd56618de6a6c3425108251a2a5601a275ef..80fdc8b8c41a1d6c02ab4995af17a75c8bd094f4 100644 --- a/docs/source_docs/Inputs_Chapter.rst +++ b/docs/source_docs/user_guide/run-time_inputs.rst @@ -36,18 +36,24 @@ values for setting up a problem. Pay special attention to any prefixes for the keywords such as ``mfix``, ``amr``, ``geometry``, ``nodal_proj`` etc. .. toctree:: - :maxdepth: 1 - + :maxdepth: 0 + :hidden: + :titlesonly: + + inputs/initialization + inputs/time-stepping + inputs/domain + inputs/geometry + inputs/mesh_and_gridding + inputs/multigrid-solvers + inputs/model_options + inputs/species_defs + inputs/fluid_model + inputs/solids_model + inputs/chemical_reactions + inputs/regions_defs + inputs/initial_conditions + inputs/boundary_conditions + inputs/output + inputs/advanced inputs/InputsProblemDefinition - inputs/InputsCoupling - inputs/InputsTimeStepping - inputs/InputsDiscretization - inputs/InputsInitialization - inputs/InputsLoadBalancing - inputs/InputsMultigrid - inputs/InputsHypre - inputs/InputsPlotFiles - inputs/InputsCheckpoint - inputs/InputsMonitors - inputs/InputsPICtoDEM - inputs/InputsVerbosity