From 88db227b6301b8ebebd83501d9c7f38abacedeac Mon Sep 17 00:00:00 2001 From: Jordan Musser Date: Tue, 23 Jan 2024 14:43:22 -0500 Subject: [PATCH] Add changes --- docs/source_docs/conf.py | 2 +- .../user_guide/inputs/geometry.rst | 310 ++++++++++++++++-- .../inputs/images/geometry/EB_box_ex.png | Bin 0 -> 9707 bytes .../inputs/images/geometry/EB_cylinder_ex.png | Bin 0 -> 12051 bytes .../geometry/cylinder_geometry_inputs.png | Bin 0 -> 9736 bytes 5 files changed, 279 insertions(+), 33 deletions(-) create mode 100644 docs/source_docs/user_guide/inputs/images/geometry/EB_box_ex.png create mode 100644 docs/source_docs/user_guide/inputs/images/geometry/EB_cylinder_ex.png create mode 100644 docs/source_docs/user_guide/inputs/images/geometry/cylinder_geometry_inputs.png diff --git a/docs/source_docs/conf.py b/docs/source_docs/conf.py index b07a662..23ddcc2 100644 --- a/docs/source_docs/conf.py +++ b/docs/source_docs/conf.py @@ -105,7 +105,7 @@ html_theme_options = { # Toc options 'collapse_navigation': True, 'sticky_navigation': True, - 'navigation_depth': 3, + 'navigation_depth': 4, 'includehidden': True, 'titles_only': False } diff --git a/docs/source_docs/user_guide/inputs/geometry.rst b/docs/source_docs/user_guide/inputs/geometry.rst index cf6a04e..eb69e51 100644 --- a/docs/source_docs/user_guide/inputs/geometry.rst +++ b/docs/source_docs/user_guide/inputs/geometry.rst @@ -8,7 +8,10 @@ The following inputs are defined using the ``mfix`` prefix. +------------------------+-------------------------------------------------------------------+----------+---------------------+ | | Description | Type | Default | +========================+===================================================================+==========+=====================+ -| geometry | Select a predefined EB geometry | String | '' | +| geometry | Select a basic ``box`` or ``cylinder`` predefined EB geometry, or | String | '' | +| | the user-programed ``generic`` geometry. Details about these | | | +| | geometry options and associated additional inputs are provided | | | +| | in the following sections. | | | +------------------------+-------------------------------------------------------------------+----------+---------------------+ | geometry_filename | The CSG file that defines the EB geometry | String | '' | +------------------------+-------------------------------------------------------------------+----------+---------------------+ @@ -18,29 +21,256 @@ The following inputs are defined using the ``mfix`` prefix. 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. +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. + 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. +.. _InputsGeometry_PredefinedEBs: -Pre-defined geometries +Predefined geometries ---------------------- -The ``mfix.geometry`` input is used to choose one of the basic pre-defined geometries, or to +The ``mfix.geometry`` input is used to choose one of the basic predefined geometries, or to select the option to use a user-defined geometry constructed from native AMReX implicit functions. -Constructive solid geometry ---------------------------- +``box`` geometry +^^^^^^^^^^^^^^^^ -Use the ``mfix.geometry_filename`` input to select a *constructive solid geometry (CSG)* that defines -the system geometry. +The following inputs are defined using the ``box`` prefix. + ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| | Description | Type | Default | ++========================+===================================================================+==========+=====================+ +| Lo | Low corner of the embedded boundary box | Reals | ``prob_lo`` | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| Hi | High corner of the embedded boundary box | Reals | ``prob_hi`` | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| internal_flow | Flag to indicate that flow is *inside* the box. | Bool | true | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| offset | Shift low side box walls by ``+offset`` and high side walls by | Real | 1.0e-15 | +| | ``-offset``. An example use of this input would be to define a | | | +| | a box with ``Lo`` and ``Hi`` equal to ``prob_lo`` and ``prob_hi``.| | | +| | The offset slightly shrinks the ``box`` so the walls do not | | | +| | coincide with the domain extents. | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ + +``box`` limitations +""""""""""""""""""" + +The predefined EB ``box`` geometry has several limitations: + +* The sides of the box should not coincide with the domain extents. +* A ``box`` is aligned with the coordinate axes and cannot be rotated in any direction. +* There can only be one ``box``. Multiple boxes cannot be defined and combined. + + +``box`` example +""""""""""""""" + +The domain is a :math:`2 \times 2 \times 8` cuboid where *X* and *Y* span :math:`[-1,1]`, +and *Z* spans :math:`[0,8]`. A :math:`10` meter long embedded boundary ``box`` with a +:math:`1 \times 1` cross-section runs lengthwise through the domain, centered about the +*Z* axis. The EB is shifted down the *Z* axis so that there is a :math:`-1` meter +overhang on the low and high *Z* domain faces. + +.. _inputs_box_geometry_ex: + +.. code-block:: bash + :caption: Snippet of intpus for predefined EB ``box`` geometry example. This is not a complete input file. + + # Define periodicity and domain extents + # ------------------------------------------------------------- + geometry.coord_sys = 0 # Cartesian coordinates + geometry.is_periodic = 0 0 1 # periodicity for each direction + geometry.prob_lo = -1. -1. 0 # lo corner of physical domain. + geometry.prob_hi = 1. 1. 8. # hi corner of physical domain + + # Select box geometry and specify settings + # ------------------------------------------------------------- + mfix.geometry = box + + box.Lo = -0.5 -0.5 -1.0 + box.Hi = 0.5 0.5 9.0 + + box.offset = 0. + box.internal_flow = true + + +:numref:`fig_box_geometry_ex` illustrates the (grey) domain and (blue) embedded +boundary ``box`` geometry. The left image is a 3D rendering of the setup, and +the center and right images are 2D slices along the *XZ* and *XY* planes, respectively. + + +.. _fig_box_geometry_ex: + +.. figure:: ./images/geometry/EB_box_ex.png + :width: 100% + :align: center + :alt: domain used with box embedded boundary + + Example of predefined embedded boundary ``box`` geometry with the EB colored blue and the domain colored grey. + Left: the domain and EB are rendered in 3D. + Center: a 2D slice showing the XZ plane. + Right: a 2D slice showing the XY plane. + + +This is an internal flow setup, therefore the sections of the domain that do not intersect +the EB ``box`` are *covered* and thereby excluded from run-time calculations. + +* No :ref:`boundary conditions` are needed for the low and high + domain faces in *X* and *Y* because they are fully covered. + +* The low and high *Z* domain faces remain uncovered, however no boundary conditions are + needed because the domain is periodic in *Z* + (*see* the :ref:`inputs snippet` for this example ). + + +---- + + +``cylinder`` geometry +^^^^^^^^^^^^^^^^^^^^^ + +The following inputs are defined using the ``cylinder`` prefix. + ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| | Description | Type | Default | ++========================+===================================================================+==========+=====================+ +| radius | Cylinder radius | Real | 0.0002 | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| height | Height (length) of cylinder. If the height is not defined (-1), | Real | -1 | +| | then the cylinder is made infinitely long to overhang the domain | | | +| | extents. | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| direction | Axis the cylinder runs along. | int | 0 | +| | (``0``: *X*, ``1``: *Y*, ``2``: *Z*) | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| center | Center of cylinder. For a cylinder with an undefined ``height``, | Reals | 0. 0. 0. | +| | the center value in the height ``direction`` can be any value. | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| rotation | Rotation angle in degrees of cylinder. | Real | 0. | +| | | | | +| | * Only cylinders with an undefined ``height`` (i.e., infinitely | | | +| | long) can be rotated. | | | +| | * Rotation is applied about the ``center`` of the cylinder. | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| rotation_axe | Axis to rotate the cylinder about. | int | 0 | +| | (``0``: *X*, ``1``: *Y*, ``2``: *Z*) | | | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ +| internal_flow | Flag to indicate that flow is *inside* the box. | Bool | true | ++------------------------+-------------------------------------------------------------------+----------+---------------------+ + +The inputs for the predefined ``cylinder`` embedded boundary geometry are illustrated in :numref:`fig_cylinder_geometry_inputs`. + +.. _fig_cylinder_geometry_inputs: + +.. figure:: ./images/geometry/cylinder_geometry_inputs.png + :width: 80% + :align: center + :alt: domain used with box embedded boundary + + Illustration of predefined embedded boundary ``cylinder`` geometry inputs where the cylinder geometry is + blue and the domain is grey. + + +``cylinder`` limitations +"""""""""""""""""""""""" + +The predefined EB ``cylinder`` geometry has several limitations: + +* The ends of the ``cylinder`` should not coincide with the domain extents. The ``cylinder`` should be shorter than the domain, + or sufficiently long that it overhangs the ends of the domain. +* Rotations are about a single axis. +* There can only be one ``cylinder``. Multiple cylinders cannot be defined and combined. + + +``cylinder`` example +"""""""""""""""""""" + +The domain is a :math:`4 \times 1 \times 1` cuboid where *Y* and *Z* span :math:`[0,1]`, +and *X* spans :math:`[0,4]`. An embedded boundary ``cylinder`` with :math:`0.45` radius +runs lengthwise through the domain, offset by :math:`[0.5]` in the *Y* and *Z*, respectively. +The cylinder is not assigned a length, therefore it runs past the low and high *X* domain faces. + +.. _inputs_cylinder_geometry_ex: + +.. code-block:: bash + :caption: Snippet of intpus for predefined EB ``cylinder`` geometry example. This is not a complete input file. + + # Define periodicity and domain extents + # ------------------------------------------------------------- + geometry.coord_sys = 0 # Cartesian coordinates + geometry.is_periodic = 0 0 0 # periodicity for each direction + geometry.prob_lo = 0. 0. 0 # lo corner of physical domain. + geometry.prob_hi = 4. 1. 1. # hi corner of physical domain + + # Select cylinder geometry and specify settings + # ------------------------------------------------------------- + mfix.geometry = cylinder + + cylinder.internal_flow = true + + cylinder.radius = 0.45 + + cylinder.direction = 0 + cylinder.center = 0.0 0.5 0.5 + + +:numref:`fig_cylinder_geometry_ex` illustrates the (grey) domain and (blue) embedded +boundary ``cylinder`` geometry. The left image is a 3D rendering of the setup, and +the center and right images are 2D slices along the *XZ* and *YZ* planes, respectively. + +.. _fig_cylinder_geometry_ex: + +.. figure:: ./images/geometry/EB_cylinder_ex.png + :width: 100% + :align: center + :alt: domain used with box embedded boundary + + Example of predefined embedded boundary ``cylinder`` geometry with the EB colored blue and the domain colored grey. + Left: the domain and EB are rendered in 3D. + Center: a 2D slice showing the XZ plane. + Right: a 2D slice showing the YZ plane. + + +This is an internal flow setup, therefore the sections of the domain that do not intersect +the EB ``cylinder`` are *covered* and thereby excluded from calculations. + +* No :ref:`boundary conditions` are needed for the low and high + domain faces in *Y* and *Z* because they are fully covered. + +* The low and high *X* domain faces remain uncovered, therefore boundary conditions are + needed to fully specify the problem. Example boundary conditions include a mass inflow + on the low *X* face and a pressure outflow on the *X* high face. + + +---- + + +``generic`` geometry +^^^^^^^^^^^^^^^^^^^^ + +The ``generic`` geometry option is used to select the user-programed embedded boundary geometry. + +* A custom embedded boundary geometry is programed by the user in ``src/eb/mfixeb_generic.cpp`` + using ``AMReX`` native implicit functions and operations. +* An executable containing the geometry modifications is compiled. +* The geometry is accessed using the ``generic`` input. + +.. note:: + A full description of this feature is beyond the scope of this section. A future update to + the documentation may include a tutorial to better demonstrate this capability. + + +.. _InputsGeometry_Regions_and_BCs: Regions and boundary conditions ------------------------------- @@ -57,32 +287,32 @@ in the ``regions`` section, then they are used to specify two no-slip wall bound :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 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 + # 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.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 + 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 + # 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.wall1 = nsw + bc.wall1.normal = 0.0 1.0 0.0 - bc.wall2 = nsw - bc.wall2.normal = 0.0 -1.0 0.0 + bc.wall2 = nsw + bc.wall2.normal = 0.0 -1.0 0.0 .. caution:: @@ -90,3 +320,19 @@ in the ``regions`` section, then they are used to specify two no-slip wall bound boundaries. It is better to specify planes slightly offset from the domain as demonstrated in the :ref:`above example`. + +.. _InputsGeometry_CSG: + +Constructive solid geometry +--------------------------- + +Use the ``mfix.geometry_filename`` input to select a *constructive solid geometry (CSG)* that defines +the system geometry. + +* A constructive solid geometry can be created using OpenSCAD. +* This option requires that the executable be built with CSG support. + See the build documentation for for details. + +.. note:: + A full description of this feature is beyond the scope of this section. A future update to + the documentation may include a tutorial to better demonstrate this feature. diff --git a/docs/source_docs/user_guide/inputs/images/geometry/EB_box_ex.png b/docs/source_docs/user_guide/inputs/images/geometry/EB_box_ex.png new file mode 100644 index 0000000000000000000000000000000000000000..8437430885a5623b41623b6b42c4563c19116aae GIT binary patch literal 9707 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 literal 0 HcmV?d00001 diff --git a/docs/source_docs/user_guide/inputs/images/geometry/EB_cylinder_ex.png b/docs/source_docs/user_guide/inputs/images/geometry/EB_cylinder_ex.png new file mode 100644 index 0000000000000000000000000000000000000000..fb7238299094892d62b81ef769c2b9c2dffa890f GIT binary patch literal 12051 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 XZVi(<0tFZt7#KWV{an^LB{Ts5KZG1_ literal 0 HcmV?d00001 diff --git a/docs/source_docs/user_guide/inputs/images/geometry/cylinder_geometry_inputs.png b/docs/source_docs/user_guide/inputs/images/geometry/cylinder_geometry_inputs.png new file mode 100644 index 0000000000000000000000000000000000000000..be8870f55e5e091aee101c34d196edbfff0396d4 GIT binary patch literal 9736 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 MUHx3vIVCg!0E2S}ZvX%Q literal 0 HcmV?d00001 -- GitLab