CHAPARRAL Namelist
The CHAPARRAL namelist specifies solver parameters for the Chaparral view factor library [1].
- Required/Optional:
Optional
- Single/Multiple Instances:
Single
Note
The CHAPARRAL namelist is optional, but Genre will perform different tasks depending on whether one is supplied. If there is a CHAPARRAL namelist, the specified enclosure surface is generated and written to the enclosure file along with the calculated view factors. If there is no CHAPARRAL namelist, just the enclosure surface is written; this is useful for examining the surface for correctness prior to performing the expensive view factor calculation.
General Guidance
Use blocking_enclosure, partial_enclosure, and partial_area to define the problem.
Use hemicube_resolution and min_separation to set appropriate solver parameters [2]. The defaults are a good starting point, and may be sufficient.
The defaults for the other parameters are sufficient for most problems.
It is a good idea to consider patching, especially for high-resolution problems.
Read the genre output, noting:
The “Maximum desired surface subdivision” is less than or equal to the “Actual maximum surface subdivision”. If not, you may need to change either min_separation or max_subdivisions, or address a problem in the mesh.
The number of “Nonzero lower/upper triangular entries” changes by a few % at most during the smoothing step. If the change is excessive, e.g. 10%, consider the tip in the hemicube_resolution section.
The message “WARNING!! Solution is not converged!” should not appear in the smoothing stage. If it does, follow the suggestions in the hemicube_resolution tip. Increasing the maximum smoothing iterations is not advised, this failure generally indicates an underlying issue.
The best way to tell if your view factor calculation is trustworthy is by looking at the output for the smoothing stage. A well-resolved simulation does not require significantly changing the number of non-zero entries, and should require no more than tens of iterations. For instance, consider this smoothing output:
******************************************************************
V I E W F A C T O R M A T R I X S M O O T H I N G
******************************************************************
Smoothing of viewfactor matrix for enclosure <OUTER>
PCG Solver, wt = 2.0
Max iterations = 200
Tolerance = 1e-08
Enforcing reciprocity by averaging...
Nonzero lower triangular entries = 14783488 changed to 14889500
Nonzero upper triangular entries = 14715955 changed to 14889500
Elapsed time = 1.67
Number of passes = 1
Number of iterations = 9
Elapsed time = 4.51
The number of nonzero entries changed from ~14.7m to ~14.9m, roughly a 1% increase. Furthermore, only 9 iterations were performed. If a smoothing step increases the number of nonzero entries significantly (e.g. by 10%), or takes closer to the 50-iteration limit, then something is likely wrong and the results should not be trusted. Steps to improve the simulation should be:
Ensure the mesh does not have fundamental issues, such as vanishingly tiny elements, overlapping surfaces, improper orientation, improper symmetries, unaccounted holes, etc.
Ensure the problem is set up correctly, with appropriate values for blocking_enclosure, partial_enclosure, and partial_area.
Improve solver parameters. Either the hemicube_resolution needs to be increased, min_separation needs to be increased, patching needs to be introduced, or metis_face_patch_ratio needs to be increased (assuming METIS patching).
blocking_enclosure
Defines whether this is a blocking problem; i.e., whether the line segment connecting two enclosure surface points may intersect the surface at an intermediate point. If the shape produced by the enabled radiating surfaces is convex, this parameter may be set to false.
- Type:
logical
- Default:
true
Warning
If blocking_enclosure = F
is provided to a blocking problem, the view
factors will be incorrect. If blocking_enclosure = T
is provided to a
non-blocking problem, the view factor calculation will be correct, but will
run slower than necessary.
partial_enclosure
Defines whether this is a partial enclosure problem (i.e., one with gaps to an ambient temperature).
- Type:
logical
- Default:
false
Note
When true, partial_area
must be given as well.
Note
This parameter informs Genre whether a given geometry contains gaps after
all symmetries are applied. For example, if computing view factors on the
interior of a complete sphere, with quarter-symmetry applied, one ought to
supply partial_enclosure = F
(the default).
Tip
If an enclosure is water-tight, it is not a partial enclosure. If an enclosure might leak when filled with water, it is a partial enclosure.
partial_area
Area of the gaps in a partial enclosure problem, before symmetries are
applied. Required when partial_enclosure
is true.
- Type:
real
- Default:
none
- Valid Values:
\(\gt 0\)
Note
There are many possible surfaces which will fill gaps in a surface. For best
results, this area ought to be near the minimum partial enclosure area. We
suggest the provided partial_area
be greater than or equal to the minimum
partial enclosure area, and within a factor of two of the minimum partial
enclosure area. Genre computes this and reports the value after computing
view factors (for example, see below). It may be necessary to run genre
twice; once to compute the minimum partial enclosure area, and a second time
with that value provided as the partial_area
value.
******************************************************************
V I E W F A C T O R C A L C U L A T I O N
******************************************************************
Calculating viewfactors for enclosure <OUTER>
enclosure geometry: 3D
enclosure type: partial (area=0.001257), blocking
<snip>
Minimum Partial Enclosure Area = 0.00122526
hemicube_resolution
The number of 1D subdivisions for the hemicube over each face. Given a
hemicube_resolution
of \(n\), there will be a total of \(n^2\) total
subdivisions per hemicube.
- Type:
integer
- Default:
500
- Valid Values:
\(\geq 4\)
Note
This is one of the most significant solver factors. Increasing
hemicube_resolution
will both increase runtime and improve the accuracy
of the computed view factors. The given default is a good starting point.
This tends to be more important than min_separation
on fine meshes.
This is because on fine meshes, faces are less likely to need subdivision,
while higher resolution hemicubes are needed to accurately hit faces.
Tip
Read the General Guidance section for tips on how to decide whether
hemicube_resolution
ought to be increased.
min_separation
The minimum ratio of distance to diameter between any two faces.
A face \(j\) is subdivided until the following condition is satisfied for all subfaces \(k\):
where \(\delta\) is the min_separation
, \(d_{kj}\) is the diameter
of subface \(k\) of face \(j\), and \(\Delta x^\mathrm{min}_j\) is
the minimum distance between face \(j\) and all other faces.
- Type:
real
- Default:
20
- Valid Values:
\(\geq 0\)
Note
This is one of the most significant solver factors. Increasing
min_separation
will both increase runtime and improve the accuracy of the
computed view factors. The given default is a good starting point. This tends
to be more important than hemicube_resolution
on coarse meshes. This is
because on coarse meshes, low-resolution hemicubes tend to hit most faces,
while coarse faces are more likely to need subdivision.
Tip
A range of 10 - 40 is most useful for most problems.
Warning
The number of subdivisions is limited by max_subdivisions.
verbosity_level
Determines the detail and frequency of terminal output.
- Type:
integer
- Default:
2
- Valid Values:
\(\geq 0\)
max_subdivisions (expert)
The maximum face subdivisions allowed to satisfy min_separation.
- Type:
integer
- Default:
100
- Valid Values:
\(\geq 0\)
Note
The default is set such that, in most scenarios, the specified min_separation will be reached.
Warning
This limit will not be exceeded, regardless of min_separation
. Genre
prints the maximum number of subdivisions needed to satisfy the given
min_separation
, shown below. If the maximum desired surface subdivision
exceeds the actual maximum allowed by max_subdivisions
, the computed view
factors may be of poor quality. Below is an example of a good output, where
the maximum desired surface subdivision did not reach the maximum allowed.
******************************************************************
V I E W F A C T O R C A L C U L A T I O N
******************************************************************
<snip>
Maximum desired surface subdivision = 38, 37
Actual maximum surface subdivision = 100
BSP_max_tree_depth (expert)
This is a Chaparral-internal parameter. [1]
- Type:
integer
- Default:
50
- Valid Values:
\(\geq 1\)
BSP_min_leaf_length (expert)
This is a Chaparral-internal parameter. [1]
- Type:
integer
- Default:
25
- Valid Values:
\(\geq 1\)
spatial_tolerance (expert)
This is a Chaparral-internal parameter. [1]
- Type:
real
- Default:
\(10^{-8}\)
- Valid Values:
\(\gt 0\)
smoothing_max_iter (expert)
This is an upper limit to the number of smoothing iterations permitted
- Type:
integer
- Default:
50
- Valid Values:
\(\geq 0\)
Warning
This upper limit should not be increased. If a simulation is failing to
converge at the smoothing step, the results ought not be trusted. Some other
issue is likely present, for instance insufficient hemicube_resolution
or
insufficient patching. The
number of smoothing iterations used is printed by genre, see below:
******************************************************************
V I E W F A C T O R M A T R I X S M O O T H I N G
******************************************************************
<snip>
Number of passes = 1
Number of iterations = 17
If smoothing failed to converge in the maximum permitted steps, the following message will appear:
WARNING!! Solution is not converged!
smoothing_tolerance (expert)
This is a Chaparral-internal parameter. [1]
- Type:
real
- Default:
\(10^{-8}\)
- Valid Values:
\(\gt 0\)
smoothing_weight (expert)
This is a Chaparral-internal parameter. [1]
- Type:
real
- Default:
2.0
- Valid Values:
\(\gt 0\)