Skip to content

Commit

Permalink
Add a simple thermohydraulic solver (#30)
Browse files Browse the repository at this point in the history
Merges in new ceramic evaluation and thermohydraulic capabilities.

Co-authored-by: Mark C. Messner <messner@anl.gov>
Co-authored-by: BBarua <barua@anl.gov>
Co-authored-by: Pawan Chaugule <pchaugule@anl.gov>
  • Loading branch information
4 people authored Oct 11, 2022
1 parent 12bc7c7 commit c31c5e5
Show file tree
Hide file tree
Showing 47 changed files with 2,839 additions and 957 deletions.
4 changes: 3 additions & 1 deletion .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,9 @@ disable=print-statement,
consider-using-f-string,
consider-using-in,
unnecessary-lambda-assignment,
implicit-str-concat
implicit-str-concat,
too-many-lines,
too-many-public-methods

# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2021 UChicago Argonne, LLC
Copyright 2022 UChicago Argonne, LLC

All Rights Reserved

Expand Down
4 changes: 2 additions & 2 deletions doc/sphinx/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
# -- Project information -----------------------------------------------------

project = 'srlife'
copyright = '2021, Argonne National Laboratory'
copyright = '2022, Argonne National Laboratory'
author = 'Argonne National Laboratory'

# The full version, including alpha/beta/rc tags
release = '1.2.1'
release = '2.0.0'


# -- General configuration ---------------------------------------------------
Expand Down
13 changes: 6 additions & 7 deletions doc/sphinx/source/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,22 @@ srlife is available in the `pypi <https://pypi.org/>`_ package repository
and can be installed with `pip`. srlife uses python3 and requires several
additional python packages, all of which are available pypi.

srlife is compatible with python3 only, specifically python versions 3.6, 3.7,
3.8, and 3.9
srlife is compatible with python3 only.

Install using the pip package manager
-------------------------------------

The easiest way to install the package is to use the `pip` package manager, installing srlife from pypi automatically.

Ubuntu Linux 18.04
""""""""""""""""""
Linux
"""""

.. code-block:: console
pip install srlife
MacOS Sierra 10.14 Mojave
"""""""""""""""""""""""""
MacOS
"""""

It is easiest to install srlife using a homebrew version of python, not the
default system python.
Expand All @@ -45,7 +44,7 @@ to also obtain the tutorial, example, and test files you can install the
package directly from `github <https://github.com/Argonne-National-Laboratory/srlife>`_. In addition to the, cmake, BLAS, and LAPACK requirements you will
need git and, optionally, the nose package to automatically run the tests.

Ubuntu Linux 18.04
Ubuntu Linux 20.04
""""""""""""""""""

The following installs the prerequisites, downloads srlife, sets up the python package, and runs the automated test suite.
Expand Down
65 changes: 59 additions & 6 deletions doc/sphinx/source/managers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ taking the basic input information:
and providing the estimated life of the receiver as a number of
repetitions of the daily cycle.

Once the manager class is constructed the user only needs to call the
Once the manager class is constructed for metallic materials the user only needs to call the

.. code-block::
Expand All @@ -25,6 +25,13 @@ terms of the number of expected single-day repetitions. The calculation scales
the results appropriately given the number of explicitly-defined `days`
provided to the :py:class:`srlife.receiver.Receiver`.

For ceramic materials function instead returns the time independent
reliability of the design

.. code-block::
reliability = manager.solve_life()
SolutionManager description
----------------------------

Expand All @@ -38,7 +45,8 @@ internal srlife subclasses. Specifically, the manager handles the process of:
displacements.
3. Using the temperature and stress/strain information to solve for the
damage in each tube.
4. Finding the worst-case tube and calculating the estimated life.
4. Finding the worst-case tube and calculating the estimated life or
estimated reliability.

.. autoclass:: srlife.managers.SolutionManager
:members:
Expand Down Expand Up @@ -105,8 +113,44 @@ Global options
| progress | bool | False | Provide progress bar in the command line |
+----------+-----------+---------+----------------------------------------------+

Thermal solver options
^^^^^^^^^^^^^^^^^^^^^^
Coupled thermal solver options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+---------+--------------+---------+--------------------------------------------------------------+
| Option | Data type | Default | Explanation |
+=========+==============+=========+==============================================================+
| rtol | float | 1.0e-6 | Nonlinear solver relative tolerance |
+---------+--------------+---------+--------------------------------------------------------------+
| atol | float | 1.0e-3 | Nonlinear solver absolute tolerance |
+---------+--------------+---------+--------------------------------------------------------------+
| miter | int | 1000 | Maximum Picard solver iterations |
+---------+--------------+---------+--------------------------------------------------------------+
| verbose | bool | False | Print debug information to the terminal |
+---------+--------------+---------+--------------------------------------------------------------+
| eps | float | 1.0e-10 | Offset from zero for relative tolerance calculation |
+---------+--------------+---------+--------------------------------------------------------------+
| solid | ParameterSet | empty | Parameters for the solid heat transfer solver |
+---------+--------------+---------+--------------------------------------------------------------+
| fluid | ParameterSet | empty | Parameters for the thermohydraulic solver |
+---------+--------------+---------+--------------------------------------------------------------+

Panel thermalhydraulic solver options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+---------+-----------+---------+--------------------------------------------------------------+
| Option | Data type | Default | Explanation |
+=========+===========+=========+==============================================================+
| rtol | float | 1.0e-6 | Nonlinear solver relative tolerance |
+---------+-----------+---------+--------------------------------------------------------------+
| atol | float | 1.0e-8 | Nonlinear solver absolute tolerance |
+---------+-----------+---------+--------------------------------------------------------------+
| miter | int | 50 | Maximum nonlinear solver iterations |
+---------+-----------+---------+--------------------------------------------------------------+
| verbose | bool | False | Print debug information to the terminal |
+---------+-----------+---------+--------------------------------------------------------------+

Solid temperature solver options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+---------+-----------+---------+--------------------------------------------------------------+
| Option | Data type | Default | Explanation |
Expand Down Expand Up @@ -158,8 +202,8 @@ Structural solver options
| verbose | bool | False | Print debug information to the terminal |
+---------+-----------+---------+-----------------------------------------+

Damage model options
^^^^^^^^^^^^^^^^^^^^
Metallic damage model options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+-------------+-----------+---------+-------------------------------------------------------------------+
| Option | Data type | Default | Explanation |
Expand All @@ -169,6 +213,15 @@ Damage model options
| order | int | 1 | Polynomial order to use in conjunction with the "poly" option |
+-------------+-----------+---------+-------------------------------------------------------------------+

Ceramic damage model options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+--------------+-----------+---------+----------------------------------------------------------------------+
| Option | Data type | Default | Explanation |
+==============+===========+=========+======================================================================+
| cares_cutoff | bool | true | Do not include large compressive stresses in reliability calculation |
+--------------+-----------+---------+----------------------------------------------------------------------+

Class description
^^^^^^^^^^^^^^^^^

Expand Down
53 changes: 31 additions & 22 deletions doc/sphinx/source/materials.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ on the source of data and reliability of the current model.
+---------------------------+-----------+--------------------------------------------------------------------------+
| Alloy 282 Ni-based alloy | "A282" | Limited literature data, creep-fatigue properties preliminary |
+---------------------------+-----------+--------------------------------------------------------------------------+
| Silicon Carbide | "SiC" | Literature data for one specific batch of SiC material |
+---------------------------+-----------+--------------------------------------------------------------------------+

While the SiC failure data provided in the package is specific to one batch of material and would need to be
altered to reflect the actual properties of the material under consideration, the thermal and deformation
models should be applicable to most commercial monolithic SiC.

The material system accommodates variants within each model type.
The srlife package provides a `"base"` variant for all the materials.
Expand All @@ -46,44 +52,47 @@ Material model descriptions
Thermal materials
^^^^^^^^^^^^^^^^^

The thermal material model provides the metal's conductivity and diffusivity as a function of temperature.
The thermal material model provides the material's conductivity and diffusivity as a function of temperature.

Deformation materials
^^^^^^^^^^^^^^^^^^^^^

The deformation model system is a thin wrapper around the `neml <https://github.com/Argonne-National-Laboratory/neml>`_ -- a nonlinear
constitutive model system focused on high temperature materials developed by Argonne National Laboratory.
The `"base"` models for each material are decoupled creep-plasticity models representing both rate independent plasticity and
rate dependent plasticity. These models are not as accurate as fully-coupled viscoplastic models, but are easily calibrated against
rate dependent plasticity (elasticity only for SiC). These models are not as accurate as fully-coupled viscoplastic models, but are easily calibrated against
commonly-available experimental data.

Damage (structural) materials
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The current version of srlife includes only one damage model: an ASME-type approach that uses Miner's rule, time-fraction creep damage,
and a creep-fatigue interaction diagram to determine creep-fatigue failure.
The damage material model provides the required data, including nominal strain-based fatigue curves, a creep rupture correlation, and
the interaction diagram.
The current version of srlife includes two damage models:

Fluid materials
^^^^^^^^^^^^^^^
* An ASME-type approach that uses Miner's rule, time-fraction creep damage, a
and a creep-fatigue interaction diagram to determine creep-fatigue failure.
The damage material model provides the required data, including nominal strain-based fatigue curves, a creep rupture correlation, and
the interaction diagram. This model is suitable for metallic materials.
* A time-independent ceramic reliability models representing an extension to 3D of standard uniaxial Weibull failure statistics.
This model is suitable for ceramic materials.

The fluid material system is different than the other three materials. The model describes the convective heat transfer coefficient between the
base metal and a given fluid as a function of temperature. Note that this neglects the influence of flow rate, which may be incorporated into future
versions. Instead of being indexed against the tube material the fluid material systems indexes the models first against the coolant type. The table
below describes the options currently embedded in NEML.
Thermal fluid materials
^^^^^^^^^^^^^^^^^^^^^^^

+----------------------+-----------+----------+
| Fluid | String ID | Comments |
+======================+===========+==========+
| Molten chloride salt | "salt" | |
+----------------------+-----------+----------+
The fluid material system is different than the other three materials in that it relates to the receiver working fluid and not
the solid material. This system provides the physical properties (density, dynamic viscosity, heat capacity, and conductivity)
and thermohydraulic correlations (a Nusselt correlation) required to calculate heat transfer along a flow path, including
convective heat transfer between the tube material and the working fluid.

As with the metallic material models, the fluid material system also subdivides models with a variant specification. Again, srlife provides a
`"base"` variant and users could expand the system to other models.
+--------------------------------------------+--------------------+----------+
| Fluid | String ID | Comments |
+============================================+====================+==========+
| Magnesium-potassium eutectic chloride salt | "32MgCl2-68KCl" | |
+--------------------------------------------+--------------------+----------+
| Supercritical carbon dioxide | "sCO2" | |
+--------------------------------------------+--------------------+----------+

Convective heat transfer properties could vary both with the working fluid type and with the tube material. The fluid material system provides a
default option suitable for most metallic tube material and, where data is available available, also specializes the fluid model to specific materials.
As with the solid material models, the fluid material system also subdivides models with a variant specification. Again, srlife provides a
`"base"` variant and users could expand the system to other models.

Loading material models
-----------------------
Expand All @@ -95,4 +104,4 @@ models for a particular tube material:

The second loads in data for a particular working fluid:

.. autofunction:: srlife.library.load_fluid
.. autofunction:: srlife.library.load_thermal_fluid
51 changes: 34 additions & 17 deletions doc/sphinx/source/overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,40 @@ An overview of srlife
=====================

srlife is a package for estimating the life of high temperature solar receivers.
The package currently focuses on metallic, tubular, panel receivers somewhat
skewed towards new designs using molten chloride salt as the working fluid,
though the package includes data for evaluating different types of working
fluids and receiver materials.
The package currently focuses on tubular, panel receivers
though the package includes data for evaluating arbitrary high temperature
components if the user provides the corresponding analysis results.

srlife provides life estimation approaches for both metallic and ceramic
materials. These approaches differ, as described elsewhere in the
documentation.

The package provides a complete assessment of a receiver design starting
from the thermal and mechanical boundary conditions applied to the
individual tubes in the receiver. This means that the package requires
input from additional simulations in order to generate the boundary conditions.
Specifically, srlife would usually sit on top of a simulation of the
heliostat to calculate the indicant solar flux, simulations or
measurements of the effective absorption of the receiver tubes, and system-level
and detailed thermohydraulic simulations to determine the local
thermomechanical boundary conditions on each tube.
heliostat to calculate the indicant solar flux and simulations or
measurements of the effective absorption of the receiver tube.
The package, however, provides a simple thermohydraulic system solver for
tubular receivers which can find the fluid and tube temperatures along
each flow path if provided with the flow path inlet temperatures and
flow rates.

Given this information, presented as time-dependent boundary
conditions representing representative conditions on one or more
thermal days, the package estimates the structural life of the
receiver, providing this estimate as a number of repetitions of the
user-provided daily cycle(s).
user-provided daily cycle(s). For metallic materials the package
provides a best-estimate life prediction using average material properties.
For ceramic receivers the analysis is currently time independent and
reports simply the reliability of the system under the provided
thermomechanical conditions, i.e. the probability the design will
not fail. Future versions of the software will extend the
ceramic failure models to account for time dependent subcritical crack growth.
When these improvements are completed the ceramic models will report the reliability as
a function of time or, alternatively, the time until the receiver reliability falls
below some reliability metric.

The package includes material information for a variety of
receiver structural materials and working fluids. The user can
Expand All @@ -33,17 +47,20 @@ base release.
srlife provides modules to:

1. Define the receiver geometry and topology -- how panels are connected to each other and how tubes are connected within a panel.
2. Provide thermomechanical boundary conditions, specifically options for:
a. Inner or outer diameter incident heat flux
b. Inner or outer diameter fixed temperature
c. Inner or outer diameter convective heat transfer
d. Inner pressure
3. Finite difference, transient heat transfer solvers to convert the thermal boundary conditions into the receiver tube temperature fields.
2. Provide thermomechanical boundary conditions on the receiver, specifically options for:
a. Outer diameter incident heat flux on each tube
b. Inner pressure in each tube
c. Collections of panels/tubes arranged in flow paths, giving:
i. The inlet temperature of each flow path as a function of time
ii. The flow path flow rate, again as a function of time
3. A coupled finite difference, transient solid heat transfer code linked to a simple 1D thermohydraulic model for heat transfer through the receiver. The output of these solvers is both the fluid temperature as a function of
position along each flow path and time and the solid temperatures in each tube given as a function of position and time.
4. A full-scale finite element solver to take the tube temperatures and mechanical boundary conditions to the tube stress/strain/displacement fields.
5. Connections to a extensive nonlinear material model library `neml <https://github.com/Argonne-National-Laboratory/neml>`_ to provide accurate inelastic constitutive models.
6. A receiver system solver that can account for connections between tubes in a panel and panels in a receiver, to accurately model the effect of structural connections with an abstract, numerically inexpensive representation.
7. Damage solvers to estimate the level of creep-fatigue damage in a tube given the structural and thermal results.
8. An extensive material property library covering common high temperature metallic receiver materials.
7. Damage solvers to estimate the level of creep-fatigue damage in a tube given the structural and thermal results for metallic materials and ceramic reliability calculations that link the applied stresses and temperatures
to an expected reliability.
8. An extensive material property library covering common high temperature metallic and ceramic receiver materials.

Conventions
-----------
Expand Down
Loading

0 comments on commit c31c5e5

Please sign in to comment.