4.25 ADAPTIVELY REFINING AND COARSENING THE CFD MESH

Object:            AdaptiveMeshRefinement

The AdpativeMeshRefinement object can be used to activate adaptive refinement and optional coarsening of the CFD mesh using a bisection method, and to specify associated algorithmic parameters.

Notes:

  1. To prevent element degeneration when using the Default bisection strategy, it is recommended that at least one of the parameters minimumelementvolume-real and maximumaspectratio-real should be appropriately specified. Note that the parameter minimumedgelength-real (now specified under SelectionCriterion) alone does not entirely eliminate the possiblity of element degeneration in the context of the Default bisection strategy.
  2. When using the Isotropic bisection strategy, the initial unrefined mesh must satisfy a particular eligibility criterion. An arbitrary unstructured tetrahedral mesh can be pre-processed to generate a mesh which satifies this criterion using either of the python scripts PreNum.py or PreRefine.py which are provided in the “scripts” directory of the source code repository. An alternative python script Simplex.py is also provided which can be used to generate an eligible uniform tetrahedral mesh for a rectangular prism volume. When a mesh generated using the PreRefine.py script is used, the value of initialrefinementtagtype-int should be set to 2. When the PreNum.py and Simplex.py scripts are used it is not necessary to specify initialrefinementtagtype-int as the default value 0 is approprate for such meshes.
  3. During simulations in which mesh adaptation occurs, a series of binary output files will be generated for each binary output requested using the Postpro object. A numeric suffix is automatically appended to the specified output file name, which is incremented if mesh refinement or coarsening occurs between two successive output intervals. Before re-running a simulation, any existing binary output files from previous simulations should be deleted or moved to a different location to avoid potential confusion. Two scripts sower.sh and xp2exo.sh are provided in the “scripts” directory of the source code repository which demonstrate how to post-process a series of binary output files using sower and xp2exo, respectively.
  4. For a non-dimensional simulation, the parameters specified using this object are treated as dimensionless when applicable. For a dimensional simulation, the parameters specified using this object are treated as dimensional when applicable,  unless the value of mode-str is set to NonDimensional.
  5. When using the solution of a steady state simulation as an initial condition for an unsteady simulation MaxNodePreAMR can be specified under RestartParameters to enable any refinement that occured during the steady state simulation to be coarsened during the unsteady simulation. This parameter defines the maximum node number in the original, unrefined mesh and may be found in the mesh data output file generated during the steady state simulation and specified using MeshData under Restart. Note that if MeshData is not specified then the default mesh data file name is DEFAULT.MSH. If MaxNodePreAMR is not specified then only new refinements occuring during the unsteady simulation can be coarsened. Note that MaxNodePreAMR is also outputted to the restart data output file specified using RestartData under Restart (or default name DEFAULT.RST if unspecified).
  6. By convention, a load balancing step is only performed after each refinement level during pre-refinement (i.e. a refinement step that is performed at the start of a simulation, specifically time-step index = 0). For refinement steps other than pre-refinement (time-step index > 0), load balancing is done only after all the refinement levels have been completed or if truncation occurs (see TruncationThreshold keyword). The reason for this convention is that typically very large refinements should only occur during pre-refinement. Note that if a very large refinement does occur between balancings, the simulation may fail due to insufficient memory on one or more compute nodes. This may be indicated by a “signal 9” error message. In this case the TruncationThreshold keyword can be used to limit the refinement in a level and activate load balancing.

The syntax of the AdaptiveMeshRefinement object is:

under AdaptiveMeshRefinement {

under SelectionCriterion[criterion-id] { … }

under RefinementDomain { … }

Frequency = frequency-int;

Eps = eps-real;

UseUnsteadyStrategy = useunsteadystrategy-int;

MinimumElementVolume = minimumelementvolume-real;

MaximumAspectRatio = maximumaspectratio-real;

BalancingCriterion = balancingcriterion-str;

BalancingFrequency = balancingfrequency-int;

BalancingThreshold = balancingthreshold-real;

ItrFactor = itrfactor-real;

ImbalanceTolerance = imbalance-tolerance-real;

BalancingWeight = balancingweight-int;

PredictorCorrector = predictorcorrector-str;

NumCorrectorIts = numcorrectorits-int;

PredictorCorrectorCoarsening = predictorcorrectorcoarsening-str;

BisectionStrategy = bisectionstrategy-str;

CoarseningPolicy = coarseningpolicy-str;

InterpolationBasis = interpolationbasis-str;

InitialRefinementTagType = initialrefinementtagtype-int;

MaximumNumberOfElements = maximumnumberofelements-int;

TruncationThreshold = truncationthreshold-int;

RecomputeWallDistance = recomputewalldistance-int;

RecomputeDeltaPlus = recomputedeltaplus-str;

FindStatus = findstatus-str;

Mode = mode-str;

CoarseningDomainEps = coarseningdomaineps-real;

Refine3d = refine3d-int;

}

with:

frequency-int [1]:

Specifies the frequency (every so many time-iterations) at which a refinement step (with optional coarsening) is performed during an unsteady simulation.

eps-real [1e-6]:

Specifies the relative residual below which a refinement step (with optional coarsening) is performed during a steady simulation.

useunsteadystrategy-int [0]:

Specifies whether frequency-int or eps-real is used to activate a refinement step during a steady simulation. When useunsteadystrategy-int is set to 0 then eps-real is used exclusively and the value of frequency-int is ignored. When useunsteadystrategy-int is set to 1 then frequency-int is used exclusively and the value of eps-real is ignored. When useunsteadystrategy-int is set to 2 then both frequency-int and eps-real are used, specifically the value of frequency-int specifies the freqency at which a refinement step is performed when the relative residual is below eps-real.

minimumelementvolume-real [1e-16]:

Specifies the minimum permissible volume of an element generated during refinement of the CFD mesh. The default is 1e-16. If BisectionStrategy is set to Isotropic, the element volume is not constrained.

maximumaspectratio-real [-1]:

Specifies the maximum permissible aspect ratio of an element generated during refinement of the CFD mesh. If this parameter is less than or equal to zero or if BisectionStrategy is set to Isotropic, the aspect ratio is not constrained. The default is -1.

balancingcriterion-str [Regular]:

Specifies the criterion used to activate load balancing following refinement of the CFD mesh among the following list:

Regular

Specifies load balancing is to be performed at regular intervals (every so many time-iterations).

NodeMaxMinRatio

Specifies load balancing is to be performed when the ratio of the maximum to minimum subdomain nodes exceeds a specified threshold.

ElemMaxMinRatio

Specifies load balancing is to be performed when the ratio of the maximum to minimum subdomain elements exceeds a specified threshold.

balancingfrequency-int [0]:

Specifies the frequency (every so many time-iterations) at which a load balancing step is performed for the Regular balancing criterion. This must be greater than or equal to the refinement frequency (frequency-int). If set less than or equal to 0 then no load balancing is performed. The default is 0.

balancingthreshold-real [2.0]:

Specifies the threshold above which a load balancing step is performed for the NodeMaxMinRatio and ElemMaxMinRatio balancing criteria. If set less than or equal to 0 then no load balancing is performed. The default is 2.

itrfactor-real [1000.0]:

This parameter describes the ratio of inter-processor communication time compared to data redistri-

bution time. It should be set greater than 0.0001 and less than or equal to 1000000.0. If itrfactor-real is set high, a repartitioning with a low edge-cut will be computed. If it is set low, a repartitioning that requires little data redistribution will be computed. Good values for this parameter can be obtained by dividing inter-processor communication time by data redistribution time. Otherwise, a value of 1000.0 is recommended.

imbalance-tolerance [1.05]:

This parameter is used to specify the imbalance tolerance for the repartitioning, with 1 being perfect balance and nparts being perfect imbalance (nparts is the number of subdomains). A value of 1.05 is recommended.

balancingweight-int [0]:

Specifies parameter used to define the element weights for mesh repartitioning. When this parameter is set to 0 (which is the default value) then all an unweighted partitioning will be performed. When it is set to a non-zero value then a weighted partitioning will be performed and the weight of each element is computed as the sum its edge weights which are defined as follows:

predictorcorrector-str [Off]:

Specifies the activation or deactivation of the predictor-corrector strategy for unsteady simulations. This strategy allows each refinement period tn < t ≤ tn+p (where p = frequency-int) to be repeated one or more times, with mesh adaptation occuring at the end of each repetition. The first pass through the refinement period is referred to as the “predictor iteration”, while all subsequent repetitions of the refinement period are referred to as “corrector iterations”. When this strategy is activated, the entire state of the CFD simulation (i.e. whatever would be required to perform a restart) at tn is stored before the predictor iteration. At the end of the predictor iteration and all corrector iterations other than the last one, mesh adaptation is perfomed in the usual way and then the stored state is projected onto the adapted mesh and the refinement period is repeated by restarting from tn using the projected state and adapted mesh. Currently this strategy is not supported for UnsteadyAeroelastic simulations involving coupling with Aero-S. The parameter predictorcorrector-str may be set to either of the following two values:

On

Specifies activation of the predictor-corrector strategy.

Off

Specifies deactivation of the predictor-corrector strategy.

numcorrectorits-int [1]:

Specifies the number of corrector iterations that are performed when the predictor-corrector strategy is activated.

predictorcorrectorcoarsening-str [Off]:

Specifies the activation or deactivation of coarsening at each predictor-corrector iteration:

On

Specifies activation of coarsening at each predictor-corrector iteration. This may be appropriate when frequency-int is specified as 1.

Off

Specifies deactivation of coarsening at each predictor-corrector iteration. In this case coarsening will only be done after the final corrector iteration.

bisectionstrategy-str [Arbitrary]:

Specifies the activation or deactivation of the isotropic bisection strategy for refinement:

Arbitrary

Specifies de-activation of the isotropic bisection strategy. In this case, only selected edges can be refined.

Isotropic

Specifies activation of the isotropic bisection strategy. In this case the edges of each cell can only be refined in a particular sequence which is preserves the mesh quality. If immediate refinement of a selected edge would violate this sequence, any edges preceeding the selected edge in the sequence are first refined even if they are not selected.

coarseningpolicy-str [Partial]:

Specifies the choice of coarsening:

Partial

Specifies that a selected vertex of the refinement tree may only be coarsened if it is either a leaf of the tree or can become a leaf by successively coarsening other selected leafs. Note that this policy can leave some selected vertices uncoarsened.

Complete

Specifies that all selected vertices of the refinement tree are to be coarsened. Note that this policy can cause over-coarsening, i.e. coarsening of unselected vertices. Setting interpolationbasis-str to ReferenceCell is recommended when using this policy.

interpolationbasis-str [CurrentEdge]:

Specifies the method used to populate the state at new nodes inserted during a refinement step:

CurrentEdge

Specifies that the state at a new node is to be populated by interpolating from the current state at the vertices of the edge bisected by the new node. The current state is constantly updated by this procedure during a refinement step.

ReferenceCell

Specifies that the state at a new node is to be populated by interpolating from the reference state at the vertices of the cell in the reference mesh containing the new node. Here, the reference quantities correspond to the start of the refinement step (i.e. before coarsening).

initialrefinementtagtype-int [0]:

Specifies the value used to populate the type (γ) of the refinement tag for each of the elements in an initially unrefined mesh when using the isotropic refinement strategy. This should either be a nonnegative integer in the range 0 ≤ γ ≤ 3, or -1. If the value is -1 then γ is set to 0 and the ordering of the vertices is sorted ascendingly with respect to the global node numbering. This parameter is not used when restarting from a previous simulation using a mesh that has been refined with the isotropic refinement strategy; in this case the refinement tag type and vertex ordering is read from the binary input files generated by Aero-F during the previous simulation.

maximumnumberofelements-int [1e9 or 1e12]:
If the number of elements in the mesh exceeds this value, then no further refinement will be performed. The default is 1e9 unless the code is configured using the USE_64BIT_INT option in which case the default is 1e12. Note that this option must be used when the global number of element or nodes exceeds 2147483647.

truncationthreshold-int [1e7]:

Specifies a loose upper bound on the number of nodes per subdomain. Specifically, the maximum number of edges that can be selected for refinement per subdomain in each refinement level is equal to this value minus the number of nodes in the subdomain prior to refinement. This can be used to limit the peak memory required. Edges that would otherwise be refined if not for this limit can be still refined during the next refinement level if load balancing reduces the subdomain size. Note that load balancing can only be activated between refinement levels (a) during pre-refinement and (b) when the refinement is truncated using this threshold. Otherwise, load balancing can be activated only after all refinement levels have been completed.

recomputewalldistance-int [1]:

Specifies whether the distance to the wall should be recomputed after each level of refinement using the specified wall distance algorithm, or linearly interpolated from the previous state. If a value of 0 is specifed, then linear interpolation is always used. If a value of 1 is specifed (which is the default), then recomputation is done during pre-refinement and linear interpolation is done subsequently. If a value of 2 is specified then recomputation is always done.

recomputedeltaplus-int [0]:

Specifies when the maximum edge length based on the dimensionless wall coordinate (y+) used in the boundary proximity criterion should be recomputed. If a value of 0 is specifed (which is the default), then it is computed only at the start of each refinement step (i.e. before the first level of refinement). This can significantly overestimate the edge length when pre-refining from a coarse mesh. If a value of 1 is specifed, then recomputation is done before each refinement level.

findstatus-str [FloodFill]:

Specifies the the method use to find the nodal statuses (i.e. active or inactive/ghost) following a refinement step:

FloodFill

Specifies that a flood fill method will be used to find the nodal statuses. The flood fill is initialized by a randomly sampled point on the farfield which is assumed to be active.

Update

Specifies that an alternative method will be used to update the nodal statuses without performing a flood fill. This is recommended in cases for which the flood fill method does not work for example when there is an enclosed region or when the farfield is partially inactive.

mode-str [Dimensional]:

Specifies the whether parameters specified using this object are treated as dimensional or non-dimensional in a dimensional analysis:

Dimensional

Specifies that parameters specified using this object are treated as dimensional in a dimensional analysis.

NonDimensional

Specifies that parameters specified using this object are treated as non-dimensional in a dimensional analysis. Note that in a non-dimensional analysis, parameters specified using this object are always treated as non-dimensional regardless of the value assigned to mode-str.

coarseningdomaineps-real [0]:

This parameter can be used to specify that the size of the global coarsening domain is larger than the global refinement domain. For example if the global refinement domain is a sphere with radius R, then the global coarsening domain is a sphere with radius R+ε. This can be used to avoid the occurrence of un-coarsened cells near the boundary of the refinement domain when the isotropic bisection strategy is activated.

refine3d-int [1]:

This parameter can be used to disable selection for refinement of edges parallel to the global z axis. Note that this applies only to the selection criteria specified using the SelectionCriterion object and not to the selection associated with isotropic refinement strategy.

4.25.1 SPECIFYING A SELECTION CRITERION

Object:            SelectionCriterion

The syntax of the SelectionCriterion object is:

under SelectionCriterion {

Type = selectioncriterion-str;

MinimumEdgeLength = minimumedgelength-real;

MaximumEdgeLength = maximumedgelength-real;

PreRefine = prerefine-str;

NumLevels = numlevels-int;

NumCoarseningLevels = numcoarseninglevels-int;

CoarseningDomainEps = coarseningdomaineps-real;

under HessianCriterion { … }

under ValueCriterion { … }

under WallProximityCriterion { … }

under FixesCriterion { … }

under GapCriterion { … }

under RefinementDomain { … }

}

with:

selectioncriterion-str [None]:

Specifies the edge selection criterion used for mesh refinement among the following list:

None

Specifies no edges are selected for refinement.

Hessian

Specifies edges are selected for refinement using a Hessian-based criterion.

Value

Specifies edges are selected for refinement using a value-based criterion.

WallProximity

Specifies edges are selected for refinement using a criterion based on the proximity to a wall boundary.

APriori

Specifies edges are always selected for refinement, subject to other restrictions specified in this object (minimum edge length, refinement domain, etc).

Fixes

Specifies edges are selected for refinment using a criterion intended to repair the mesh in order to avoid one or more potentially problematic issues.

Gap

Specifies edges are selected for refinement using a criterion based on the gap between wall boundaries.

minimumedgelength-real [1e-16]:

Specifies half the minimum permissible length of an edge selected for refinement of the CFD mesh using the associated selection criterion. The default is 1e-16.

maximumedgelength-real [1.79769e+308]:

Specifies twice the maximum permissible length of an edge selected for coarsening of the CFD mesh using the associated selection criterion. The default is 1.79769e+308. 

prerefine-str [Off]:

Specifies activation of initial pre-refinement of the mesh at the commencement of the simulation (i.e. t = 0) among the following list:

Off

De-activates pre-refinement.

On

Activates pre-refinement.

numlevels-int [1]:

Specifies the maximum number of levels of refinement at each refinement step. The default is 1.

numcoarseninglevels-int [-1]:

Specifies the maximum number of levels of coarsening at each refinement step. The default is -1 in which case the maximum number of levels of coarsening is equal to the maximum number of levels of refinement.

coarseningdomaineps-real [0]:

This parameter can be used to specify that the size of the local coarsening domain is larger than the local refinement domain. This can be used to avoid the occurrence of un-coarsened cells near the boundary of the refinement domain when the isotropic bisection strategy is activated.

4.25.1.1 SPECIFYING A HESSIAN-BASED SELECTION CRITERION

Object:            HessianCriterion

The syntax of the HessianCriterion object is:

under HessianCriterion {

Threshold = threshold-real;

CoarseningThreshold = coarseningthreshold-real;

SensorType = sensortype-str;

HessianConstruction = hessianconstruction-str;

}

with:

threshold-real [1.0]:

Specifies the threshold value used in the refinement selection criterion. Edges with values greater than this threshold may be selected for refinement.

coarseningthreshold-real [0.0]:

Specifies the threshold value used in the coarsening selection criterion. Edges with values less than this threshold may be selected for coarsening. The recommended value is threshold-real/4 or less.

sensortype-str [Velocity]:

Specifies the scalar quantity whose Hessian is used in the Hessian-based refinement criteria:

Velocity

In this case the Hessian of the velocity magnitude is used.

Pressure

In this case the Hessian of the pressure is used.

Density

In this case the Hessian of the density is used.

Vorticity

In this case the Hessian of the vorticity is used.

hessianconstruction-str [LeastSquares]:

Specifies the method used for constructing the Hessian:

LeastSquares

In this case nodal gradients computed using the least-squares method are used to construct the Hessian.

4.25.1.2 SPECIFYING A VALUE-BASED SELECTION CRITERION

Object:            ValueCriterion

The syntax of the ValueCriterion object is:

under ValueCriterion {

Threshold = threshold-real;

CoarseningThreshold = coarseningthreshold-real;

SensorType = sensortype-str;

ThresholdType = thresholdtype-str;

}

with:

threshold-real [1.0]:

Specifies the threshold value used in the refinement selection criterion. Edges with values greater than (less than) this threshold may be selected for refinement when thresholdtype-str is set to UpperBound (LowerBound).

coarseningthreshold-real [0.0]:

Specifies the threshold value used in the coarsening selection criterion. Edges with values less than (greater than) this threshold may be selected for coarsening when thresholdtype-str is set to UpperBound (Lower Bound). The recommended value is threshold-real/2 or less.

sensortype-str [Velocity]:

Specifies the scalar quantity whose value is used in the value-based refinement criteria:

Velocity

In this case the velocity magnitude is used.

Pressure

In this case the pressure is used.

Density

In this case the density is used.

Vorticity

In this case the vorticity is used.

thresholdtype-str [UpperBound]:

Specifies the way in which the refinement and coarsening thresholds are applied, see descriptions of threshold-real and coarseningthreshold-real above for details.

4.25.1.3 SPECIFYING A WALL-DISTANCE-BASED SELECTION CRITERION

Object:            WallProximityCriterion

This object can be used to specify a refinement selection criterion based on the distance to the wall. An edge is selected for refinement when it’s length is greater than a refinement threshold which is automatically determined based on (a) the edge’s minimum distance to the wall, (b) the parameters specified with this object, and (c) the minimum value of the dimensionless wall distance (Y plus). Furthermore, an edge is selected for coarsening when its length is less than a coarsening threshold which is automatically determined in similar fashion to the refinement threshold. This criterion can be used with or without other selection criteria. If it is used with the body fitted framework then an input file containing the distance to the wall must be provided in the same way as when using the Spalart-Allmaras turbulence model in the body fitted framework. Note that this file can be generated using Cd2tet.

The syntax of the WallProximityCriterion object is:

under WallProximityCriterion {

OuterZone_d = outerzone_d-real;

OuterZone_H = outerzone_H-real;

InnerZone_D = innerzone_D-str;

InnerZone_H = innerzone_H-real;

DeltaPlus = deltaplus-real;

PreRefineInnerZone = prerefineinnerzone-str;

EdgeLengthMinMaxRatio = edgelengthminmaxratio-real;

OuterZoneMultiplier = outerzonemultiplier-real;

MinimumEdgeLengthTreatment = minimumedgelengthtreatment-str;

ActivateFirstLayer = activatefirstlayer-str;

FirstLayerActivationThreshold = firstlayeractivationthreshold-real;

PreferredDirection = preferreddirection-str;

}

with:

outerzone_d-real [1]:

Specifies the distance from the wall to the inner boundary of the outer refinement zone. The default value is 1.

outerzone_H-real [1]:

Specifies the maximum edge length in the outer refinement zone. The default value is 1.

innerzone_D-real [1]:

Specifies the distance from the wall to the outer boundary of the inner refinement zone. The default value is 1. The value of this parameter must be non-zero.

innerzone_H-real [1]:

Specifies the maximum edge length in the inner refinement zone in the following cases:

The default value is 1.

deltaplus-real [-1]:

Specifies the maximum value of the dimensionless wall distance (y+) in the inner refinement zone when set to a value greater than zero. The default value is -1. If the value is not specified to be greater than zero then innerzone_H-real is used to obtain the target edge length in the inner refinement zone and should be specified.

prerefineinnerzone-str [Auto]:

Specifies how the maximum edge length in the inner refinement zone is computed for pre-refinement (i.e. refinement at time t = 0) when deltaplus-real is specified and greater than zero:

Auto

In this case the maximum edge length is computed automatically as: deltaplus-real × length-real × 20/Re where length-real is the reference length specified in the ReferenceState object and Re is the Reynolds number.

EdgeLength

In the case the maximum edge length is the user-specified value of innerzone_H-real.

DeltaPlus

In this case the maximum edge length is determined automatically using the value of deltaplus-real and the initial fluid state by using a wall function to compute the dimensionless wall distance (y+). Typically, this option is not appropriate for pre-refinement when the initial fluid state is uniform flow. Also note that when pre-refining from a coarse mesh using this option, setting recomputedeltaplus-int to 1 is recommended. Currently this option is only supported for viscous, embeddded simulations.

edgelengthminmaxratio-real [0.4]:

Specifies the ratio between the minimum edge length and the maximum edge length. This parameter is used to control coarsening. It should be set to a value between 0 and 0.5. A value of 0 will deactivate coarsening entirely. The default value is 0.4.

outerzonemultiplier-real [infinity]:

This parameter can be used to provide additional control over refinement in the outer refinement zone by adjusting the maximum edge length in this zone. For example, if the value of this parameter is set to infinity (which is the default value) then there will be no edges selected for refinement in the outer refinement zone.

minimumedgelengthtreatment-str [Smoothed]:

When the minimum permissible size of an edge of the CFD mesh defined in minimumedgelength-real is greater than the edge length needed to keep the maximum value of the dimensionless distance of the first layer of grid points to the wall below the value specified by innerzone_H-real or deltaplus-real, the former always takes precedence over the latter. When this situation arises, two alternative treatments are available for adjusting the wall proximity refinement criterion:

Clipped

Specifies a clipped treatment. In this case the refinement thresholds in each refinement zone are initially computed using the specified value of innerzone_H-real or deltaplus-real. If any one of these refinement thresholds is less than 2*minimumedgelength-real, then the refinement threshold is set to 2*minimumedgelength-real.

Smoothed

Specifies a smoothed treatment. In this case, which is the default one, if the specified value of innerzone_H-real or the edge length associated with a specified value of deltaplus-real is less than 2*minimumedgelength-real, then the value of innerzone_H-real is set to 2*minimumedgelength-real and the refinement thresholds in each refinement zone are computed using this value.

activatefirstlayer-str [On]:

This parameter can be used to control the refinement of the first layer of occluded/inactive/ghost edges adjacent to an embedded surface. Regardless of the choice of this parameter, all occluded layers other than the first layer are not refined. Refining the first occluded layer can be beneficial when the embedded wall is moving; in this case a longer refinement period is feasible.

On

        Specifies that the first layer of occluded edges is refined.

Off

        Specifies that the first layer of occluded edges is not refined.

firstlayeractivationthreshold-real [infinity]:

This parameter can be used to provide additional control over refinement of occluded/inactive/ghost edge. When activatefirstlayer-str is set to On, an edge in the first layer of the inactive zone is activated for the purposes of refinement only if the distance to the wall from each of the edges vertices is less than the specified value of this threshold. The default value is infinity (i.e. all first-layer inactive edges are selected for refinement regardless of their vertices distances to the wall).

preferreddirection-str [None]:

This parameter can be used to optionally introduce some anisotropy into the mesh refinement. The edge length used in this criterion can be either the true edge length, or the scalar projection of the edge vector onto a preferred direction.

None

Specifies that no direction is to be preferred over any other. In this case the true edge length is used.

WallDistanceGradient

Specifies that the preferred direction corresponds to the gradient of the wall distance scalar field. In this case edges that are perpendicular to the wall will be refined more than edges that are parallel to the wall. Note that when activatefirstlayer-str is set to On, “ComputeInactive = Yes” should also be specified under WallDistanceMethod.

4.25.1.4 SPECIFYING A SELECTION CRITERION FOR LOCAL FIXES

Object:            FixesCriterion

The syntax of the FixesCriterion object is:

under FixesCriterion {

DoublyIntersectedEdgeFix = doublyintersectededgefix-str;

DoublyIntersectedEdgeThreshold = doublyintersectededgethreshold-real;

}

with:

doublyintersectededgefix-str [Off]:

This parameter can be used to activate the selection for refinement of all edges that are doubly intersected (i.e. intersected at least twice by the embedded surface).

Off

Specifies that the selection of doubly intersected edges is not activated.

On

Specifies that the selection of doubly intersected edges is activated.

doublyintersectededgethreshold-real [1.0e-4]:

Specifies the threshold value used to identify a doubly intersected edge when the doubly intersected edge fix is activated.

4.25.1.5 SPECIFYING A GAP-BASED SELECTION CRITERION

Object:            GapCriterion

This object can be used to specify a refinement selection criterion based on the gap between two embedded walls. This criterion operates in similar fashion to the boundary proximity criterion except that it utilizes the minimum gap (which is a sum of two wall distances) instead of the minimum wall distance.

The syntax of the GapCriterion object is:

under GapCriterion {

OuterZone_d = outerzone_d-real;

OuterZone_H = outerzone_H-real;

InnerZone_D = innerzone_D-str;

InnerZone_H = innerzone_H-real;

EdgeLengthMinMaxRatio = edgelengthminmaxratio-real;

OuterZoneMultiplier = outerzonemultiplier-real;

MinimumEdgeLengthTreatment = minimumedgelengthtreatment-str;

ActivateFirstLayer = activatefirstlayer-str;

FirstLayerActivationThreshold = firstlayeractivationthreshold-real;

}

with:

outerzone_d-real [1]:

Specifies the gap at the inner boundary of the outer refinement zone. The default value is 1.

outerzone_H-real [1]:

Specifies the maximum edge length in the outer refinement zone. The default value is 1.

innerzone_D-real [1]:

Specifies the gap at the outer boundary of the inner refinement zone. The default value is 1. The value of this parameter must be non-zero.

innerzone_H-real [1]:

Specifies the maximum edge length in the inner refinement zone. The default value is 1.

edgelengthminmaxratio-real [0.4]:

Specifies the ratio between the minimum edge length and the maximum edge length. This parameter is used to control coarsening. It should be set to a value between 0 and 0.5. A value of 0 will deactivate coarsening entirely. The default value is 0.4.

outerzonemultiplier-real [infinity]:

This parameter can be used to provide additional control over refinement in the outer refinement zone by adjusting the maximum edge length in this zone. For example, if the value of this parameter is set to infinity (which is the default value) then there will be no edges selected for refinement in the outer refinement zone.

minimumedgelengthtreatment-str [Smoothed]:

When the minimum permissible size of an edge of the CFD mesh defined in minimumedgelength-real is greater than the edge length needed to keep the maximum value of the dimensionless distance of the first layer of grid points to the wall below the value specified by innerZone_H-real, the former always takes precedence over the latter. When this situation arises, two alternative treatments are available for adjusting the wall proximity refinement criterion:

Clipped

Specifies a clipped treatment. In this case the refinement thresholds in each refinement zone are initially computed using the specified value of innerzone_H-real. If any one of these refinement thresholds is less than 2*minimumedgelength-real, then the refinement threshold is set to 2*minimumedgelength-real.

Smoothed

Specifies a smoothed treatment. In this case, which is the default one, if the value of innerzone_H-real is less than 2*minimumedgelength-real, then the value of innerzone_H-real is set to 2*minimumedgelength-real and the refinement thresholds in each refinement zone are computed using this value.

4.25.2 SPECIFYING A REFINEMENT DOMAIN

Object:            RefinementDomain

This object can be used to restrict mesh refinement to a part of the fluid domain. One application is to suppress refinement in the vicinity of the farfield boundary. When specified in the AdaptiveMeshRefinement object it defines a restriction that applies to all of the specified refinement criteria. When specified in the SelectionCriterion object then it defines a restriction that applies only to the associated criterion.

The syntax of the RefinementDomain object is:

under RefinementDomain {

Type = refinementdomain-str;

under Sphere { … }

under Box { … }

under Cylinder { … }

under Capsule { … }

}

with:

refinementdomain-str [None]:

Specifies the refinement domain used for mesh refinement among the following list:

None

Specifies that the entire fluid domain can be refined.

Sphere

Specifies that only edges whose midpoints lie inside a sphere can be refined.

Box

Specifies that only edges whose midpoints lie inside an axis-aligned box can be refined.

Cylinder

Specifies that only edges whose midpoints lie inside a cylinder can be refined.

Capsule

Specifies that only edges whose midpoints lie inside a spherocylinder (comprising two hemispheres connected by a cylinder) can be refined.

4.25.2.1 SPECIFYING A SPHERICAL REFINEMENT DOMAIN

Object:            Sphere

The syntax of the Sphere object is:

under Sphere {

Center_x = center_x-real;

Center_y = center_y-real;

Center_z = center_z-real;

Radius = radius-real;

}

with:

center_x-real [0.0]:

Specifies the x-coordinate of the center of the sphere.

center_y-real [0.0]:

Specifies the y-coordinate of the center of the sphere.

center_z-real [0.0]:

Specifies the z-coordinate of the center of the sphere.

radius-real [infinity]:

Specifies the radius of the sphere.

4.25.2.2 SPECIFYING AN AXIS-ALIGNED BOX REFINEMENT DOMAIN

Object:            Box

The syntax of the Box object is:

under Box {

X0 = x0-real;

Y0 = y0-real;

Z0 = z0-real;

X1 = x1-real;

Y1 = y1-real;

Z1 = z1-real;

}

with:

x0-real [-infinity]:

Specifies the x-coordinate of the lower left corner of the box.

y0-real [-infinity]:

Specifies the y-coordinate of the lower left corner of the box.

z0-real [-infinity]:

Specifies the z-coordinate of thelower left corner of the box.

x1-real [infinity]:

Specifies the x-coordinate of the upper right corner of the box, with x1-real > x0-real.

y1-real [infinity]:

Specifies the y-coordinate of the upper right corner of the box, with y1-real > y0-real.

z1-real [infinity]:

Specifies the z-coordinate of the upper right corner of the box, with z1-real > z0-real.

4.25.2.3 SPECIFYING A CYLINDRICAL REFINEMENT DOMAIN

Object:            Cylinder

The syntax of the Cylinder object is:

under Cylinder {

Point_x = point_x-real;

Point_y = point_y-real;

Point_z = point_z-real;

Normal_x = normal_x-real;

Normal_y = normal_y-real;

Normal_z = normal_z-real;

Radius = radius-real;

Length = length-real;

}

with:

point_x-real [0.0]:

Specifies the x-coordinate of the center of the circle located at the first end of the cylinder.

point_y-real [0.0]:

Specifies the y-coordinate of the center of the circle located at the first end of the cylinder.

point_z-real [0.0]:

Specifies the z-coordinate of the center of the circle located at the first end of the cylinder.

normal_x-real [0.0]:

Specifies the x-coordinate of the unit normal to the circle located at the first end of the cylinder, pointing in the direction of the second end along the axis of the cylinder.

normal_y-real [0.0]:

Specifies the y-coordinate of the unit normal to the circle located at the first end of the cylinder, pointing in the direction of the second end along the axis of the cylinder.

normal_z-real [1.0]:

Specifies the z-coordinate of the unit normal to the circle located at the first end of the cylinder, pointing in the direction of the second end along the axis of the cylinder.

radius-real [0.5]:

Specifies the radius of the cylinder.

length-real [1.0]:

Specifies the length of the cylinder.

4.25.2.3 SPECIFYING A SPHEREOCYLINDRICAL REFINEMENT DOMAIN

Object:            Capsule

The syntax of the Capsule object is:

under Capsule {

Point_x = point_x-real;

Point_y = point_y-real;

Point_z = point_z-real;

Normal_x = normal_x-real;

Normal_y = normal_y-real;

Normal_z = normal_z-real;

Radius = radius-real;

Length = length-real;

}

with:

point_x-real [0.0]:

Specifies the x-coordinate of the center of the circle located at the first end of the cylinder part.

point_y-real [0.0]:

Specifies the y-coordinate of the center of the circle located at the first end of the cylinder part.

point_z-real [0.0]:

Specifies the z-coordinate of the center of the circle located at the first end of the cylinder part.

normal_x-real [0.0]:

Specifies the x-coordinate of the unit normal to the circle located at the first end of the cylinder part, pointing in the direction of the second end along the axis of the cylinder part.

normal_y-real [0.0]:

Specifies the y-coordinate of the unit normal to the circle located at the first end of the cylinder part, pointing in the direction of the second end along the axis of the cylinder part.

normal_z-real [1.0]:

Specifies the z-coordinate of the unit normal to the circle located at the first end of the cylinder part, pointing in the direction of the second end along the axis of the cylinder part.

radius-real [0.5]:

Specifies the radius of the cylinder part and the hemispherical end parts.

length-real [1.0]:

Specifies the length of the cylinder part.