How does the value quantities mean in residual control and relaxation factor?

which value should I give to the quantities in butterfly and which parameter is it in openfoam. I searched the keyword " quantities" and got no result.
https://grasshopperdocs.com/components/butterfly/relaxtionFactors.html

image

OK, I think it should be the text like “T” “U” etc.
04_atrium_buoyancy_modified.gh (487.7 KB)
I changed the 04_atrium_buoyancy.gh example a bit to let all the 4 windows as inlet and reduced the wind speed. But I get something like this


this issue is mentioned several time by the others

There are some guess, why it happend,

  1. Rhino is not opened with unit meter or set to meter before the gh file is loaded. It is useless to change the unit to meter if gh file is already open.

  2. The wind speed of inlet is to small and the opening of the roof is too big

any idea?

This may be causing the problem.
I did the calculation and it diverged by 97 steps. The flow rate was not balanced.

It may be necessary to change the boundary conditions, reduce the relaxation factor, or change the mesh fineness.

@kinonotofu that will be a nice guideline, thanks

@kinonotofu do you know the default value of relaxation factor in butterfly or openfoam?

The default value of relaxation factor in butterfly is defined here.

%USERPROFILE%\AppData\Roaming\McNeel\Rhinoceros\6.0\scripts\butterfly\fvSolution.py

line55-58

    __default_values['relaxationFactors']['p'] = '0.3'
    __default_values['relaxationFactors']['U'] = '0.7'
    __default_values['relaxationFactors']['k'] = '0.7'
    __default_values['relaxationFactors']['epsilon'] = '0.7'

line76-111

    @classmethod
    def from_recipe(cls, recipe=0):
        """Generate fvSolution for a particular recipe.

        Args:
            recipe: 0: incompressible, 1: heat transfer.
        """
        _cls = cls()

        if recipe == 0:
            # steady incompressible
            _values = {
                'solvers': {'p_rgh': None, 'T': None},
                'SIMPLE': {'residualControl': {'p_rgh': None, 'T': None}},
                'relaxationFactors': {'p_rgh': None, 'T': None}
            }

        elif recipe == 1:
            # heat transfer
            _values = {
                'solvers': {'p': None,
                            'p_rgh': {'solver': 'PCG',
                                      'preconditioner': 'DIC',
                                      'tolerance': '1e-08',
                                      'relTol': '0.01'},
                            'T': {'relTol': '0.1', 'tolerance': '1e-8',
                                  'nSweeps': '1', 'smoother': 'GaussSeidel',
                                  'solver': 'smoothSolver'}},
                'SIMPLE': {'residualControl': {'p': None, 'p_rgh': '1e-4',
                                               'T': '1e-4'},
                           'pRefPoint': '(0 0 0)', 'pRefValue': '0'},
                'relaxationFactors': {'p': None, 'p_rgh': '0.3', 'T': '0.5'}}

        # update values based on the recipe.
        _cls.update_values(_values, mute=True)
        return _cls